diff options
Diffstat (limited to '2022/info')
62 files changed, 4841 insertions, 4324 deletions
diff --git a/2022/info/asmblox-after.md b/2022/info/asmblox-after.md index 14927f3f..d48e2597 100644 --- a/2022/info/asmblox-after.md +++ b/2022/info/asmblox-after.md @@ -4,299 +4,301 @@ <a name="asmblox-mainVideo-transcript"></a> # Transcript -[[!template new="1" text="Hi, I'm Zach and today I'll be giving" start="00:00:00.000" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="a presentation on asm-blox," start="00:00:03.800" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="a programming game inspired by WebAssembly." start="00:00:05.320" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="So programming games came into prominence" start="00:00:08.960" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="about a decade ago and are loved for providing" start="00:00:10.840" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="interesting programming challenges" start="00:00:13.160" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="without all the messiness of real world programming." start="00:00:14.760" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="I wanted to make a programming game" start="00:00:17.160" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and I decided to base it off of TIS-100," start="00:00:19.960" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="having a pretty basic UI." start="00:00:24.880" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="It seemed pretty doable in Emacs." start="00:00:28.240" video="mainVideo-asmblox" id="subtitle"]] -[[!template new="1" text="TIS 100 is a programming game" start="00:00:30.680" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="where you write a fictional assembly language" start="00:00:33.160" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="into a grid of cells which can each" start="00:00:35.760" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="communicate with one another," start="00:00:37.280" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="you're tasked with solving" start="00:00:39.480" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="fairly simple CS 101 like problems." start="00:00:41.200" video="mainVideo-asmblox" id="subtitle"]] -[[!template new="1" text="To mix things up a bit I decided to base" start="00:00:44.960" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="the language of asm-blox off of" start="00:00:48.440" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="WebAssembly, which is stack based," start="00:00:49.800" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="as opposed to TIS-100 which is registered based." start="00:00:52.520" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Here you can see the same program" start="00:00:55.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="written in the game TIS-100," start="00:00:59.200" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="what it looks like in asm-blox," start="00:01:01.680" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and the original WebAssembly that it's based off of." start="00:01:03.960" video="mainVideo-asmblox" id="subtitle"]] -[[!template new="1" text="With that said, let's get into a demo." start="00:01:08.040" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="This is the game board." start="00:01:10.640" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="It's a 4 by 3 grid." start="00:01:12.240" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Each cell has a stack of size 4." start="00:01:14.120" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="First off, I'll show some of the stack editing commands." start="00:01:16.840" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="We can add a value with the const function." start="00:01:20.280" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Here we're adding two values to this stack" start="00:01:23.760" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="to get added, and eventually the stack gets overflowed." start="00:01:27.480" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="We can fix that as follows with the clear command," start="00:01:33.400" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="so that clears the stack." start="00:01:37.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="We can duplicate values on the stack." start="00:01:40.720" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="This duplicates the item at the bottom of the stack." start="00:01:43.200" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="10 gets put on, 20 gets put on," start="00:01:45.600" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="then 10 will get duplicated" start="00:01:48.880" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and put on the top of the stack." start="00:01:50.200" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="We can increment. For example, this increments" start="00:01:52.680" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="the second to bottom, the second to bottom" start="00:01:55.920" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="from the stack." start="00:01:58.760" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="So 10, 20, increment that, clear." start="00:01:59.920" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="That's basic stack operations." start="00:02:04.400" video="mainVideo-asmblox" id="subtitle"]] -[[!template new="1" text="Next up, we have numeric commands." start="00:02:07.640" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="For example, here, if we add "add"," start="00:02:11.000" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="it pops two values off the stack," start="00:02:12.560" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="adds them, and pushes the result on." start="00:02:14.680" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Another way we can write this is as follows." start="00:02:17.080" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="We can have the add here" start="00:02:20.680" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and then nest the two constants," start="00:02:22.480" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and then this does the same thing." start="00:02:26.400" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="First, the inner constant operations run," start="00:02:28.520" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and then the outer add operation runs." start="00:02:31.720" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="We can nest as deeply as we want." start="00:02:35.520" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="There's also subtraction, multiplication, and whatnot." start="00:02:40.280" video="mainVideo-asmblox" id="subtitle"]] -[[!template new="1" text="Next up are Boolean operations." start="00:02:44.680" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Zero counts as true." start="00:02:46.480" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Anything else--sorry, zero counts as false." start="00:02:49.080" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Anything else is true." start="00:02:51.720" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="For example, this would give us false and true," start="00:02:52.760" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="so that result should be false." start="00:03:01.840" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Zero gets put on the stack," start="00:03:04.040" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="one gets put on, and then the "and" operation." start="00:03:06.120" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="So there's also or, not," start="00:03:08.160" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and various numerical comparison operations" start="00:03:12.840" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="like greater than and less than." start="00:03:17.760" video="mainVideo-asmblox" id="subtitle"]] -[[!template new="1" text="Next up are the port operations." start="00:03:21.400" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="We can send values to other cells as follows." start="00:03:22.880" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Here we create a value" start="00:03:27.320" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and then send it right." start="00:03:29.600" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Let's run this." start="00:03:33.640" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="The 10 goes on the stack," start="00:03:35.040" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and then it gets sent to the right." start="00:03:37.480" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Here it's waiting for this cell to pick it up." start="00:03:38.480" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="It can pick it up just as follows." start="00:03:41.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="So left... and then why don't we have it" start="00:03:44.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="drop that value after it gets it." start="00:03:47.480" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="So the 10 gets sent to the right." start="00:03:49.520" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="This one picks it up and drops it." start="00:03:53.920" video="mainVideo-asmblox" id="subtitle"]] -[[!template new="1" text="Lastly, we have control flow," start="00:04:00.240" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="which is a bit tricky," start="00:04:03.200" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="but with this visual," start="00:04:04.280" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="it helps explain it." start="00:04:06.880" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="There are two block constructs, "block" and "loop"," start="00:04:08.440" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and there's two jumping constructs, "br" and "brif"." start="00:04:12.280" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="So if "loop" is jumped to," start="00:04:16.880" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="the control flow goes to the beginning," start="00:04:23.120" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="the top of the loop." start="00:04:25.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="If a block is jumped to," start="00:04:26.520" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="it goes to the end of the block," start="00:04:28.640" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and these various blocks" start="00:04:31.520" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="are identified by their level of nestedness." start="00:04:33.640" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="From the point of view of this jump statement," start="00:04:36.520" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="this "br" statement, this is block level 0," start="00:04:40.640" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="this is 1, this is 2." start="00:04:45.160" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="So here, "br 1" would be referring to this loop." start="00:04:46.440" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="What this [br 1] would do is," start="00:04:49.560" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="it would jump to this loop right here." start="00:04:51.080" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="If we were to do this [br 2], what this would do is," start="00:04:54.000" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="this would jump past this block right here." start="00:04:57.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="So as another example, this right here," start="00:05:02.680" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="this is a loop that generates increasing numbers." start="00:05:09.880" video="mainVideo-asmblox" id="subtitle"]] -[[!template new="1" text="Let's see. Next up, we have modules." start="00:05:15.720" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="This is an example of a stack module." start="00:05:22.640" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="In addition to stack, there's also heaps." start="00:05:26.280" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="What this does is it allows us to create" start="00:05:28.760" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="an extra stack that we can push and pop items onto." start="00:05:34.560" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="This one can have as large size as we need." start="00:05:38.080" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Here it has a size of 20." start="00:05:41.240" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="It's taking values from up" start="00:05:43.800" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and exposing those values on the left." start="00:05:46.400" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="This loop right here, it generates numbers," start="00:05:51.080" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and it's putting them onto the stack." start="00:05:57.080" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="We can see here that those numbers" start="00:05:59.160" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="are being exposed to this cell right here." start="00:06:00.920" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="It's just taking values, and eventually," start="00:06:03.200" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="it's going to overflow and cause an error." start="00:06:07.040" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="That finishes the basic commands." start="00:06:11.200" video="mainVideo-asmblox" id="subtitle"]] -[[!template new="1" text="Why don't we try solving this puzzle." start="00:06:14.480" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="The puzzle description is right here." start="00:06:16.480" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="We want to read a value from I." start="00:06:21.320" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Send 1 to G if I is greater than 0." start="00:06:23.280" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Send 1 to E if it's equal to 0." start="00:06:28.480" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Send 1 to L if it's less than 0." start="00:06:30.800" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="And then all the other ones, we send 0 to." start="00:06:32.440" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="First things first, let's send the value we get" start="00:06:35.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="from the input down as follows." start="00:06:40.920" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Let's send that value right." start="00:06:44.400" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="You get from up." start="00:06:49.680" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Okay. So next, we're getting a value on the left." start="00:06:51.240" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Now we want to compare if this number is greater than 0." start="00:06:54.320" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="If it's greater than 0, we send 1 to G." start="00:06:58.040" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Let's perform the greater than operation" start="00:06:59.800" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="on that item we just got, and we're comparing it to 0." start="00:07:03.280" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Now that result, we're going to send down," start="00:07:08.080" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and we're going to send this original value" start="00:07:11.680" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="we got from here to the right." start="00:07:13.880" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Here, we do a similar step." start="00:07:16.880" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="We get the value from the left," start="00:07:19.000" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="but this time, we have to do an equal operation." start="00:07:20.240" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Is that number we got equal to 0?" start="00:07:22.920" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="We send that result down," start="00:07:25.760" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and then send this number to the right." start="00:07:28.960" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Lastly, we get this number from the left." start="00:07:32.880" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Here, we need to compare if it's less than 0." start="00:07:38.040" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="We send that result down," start="00:07:42.400" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and now lastly, we drop that remaining value." start="00:07:45.640" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Okay, let's--oh, and then lastly," start="00:07:50.280" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="we need to send down the value we get up." start="00:07:53.080" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Send down, up, send down, up." start="00:07:56.040" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Okay, so let's try running this." start="00:08:02.560" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Let's see. We notice that" start="00:08:04.760" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="the numbers are coming in from I." start="00:08:08.920" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="They're going through our various conditions" start="00:08:10.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and should be sending all the correct values." start="00:08:14.200" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="It looks like we're not getting any errors so far." start="00:08:18.160" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Let's speed this up." start="00:08:23.560" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="That completes the puzzle." start="00:08:26.680" video="mainVideo-asmblox" id="subtitle"]] -[[!template new="1" text="Now let's get into some of the implementation details." start="00:08:33.040" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="The first thing is the game loop." start="00:08:42.000" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="The game loop is... So this is actually extremely simple." start="00:08:46.320" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="All the state for the entire game" start="00:08:50.560" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="is stored in just a few variables." start="00:08:52.320" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="There's one variable storing" start="00:08:54.400" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="the text of each cell as a vector of strings." start="00:08:56.480" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="There's a single function" start="00:09:01.400" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="that renders the entire game, the entire board." start="00:09:06.280" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="There's a single function that would render" start="00:09:09.080" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="this entire screen based off of the state," start="00:09:11.120" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and then the game waits for you to press a key." start="00:09:13.920" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="The key usually, depending on what action you perform," start="00:09:19.240" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="updates the state and causes a re-render." start="00:09:24.120" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="It's an extremely simple game loop," start="00:09:27.040" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="but it makes implementing it pretty easy." start="00:09:29.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="To demonstrate how this game loop works," start="00:09:32.800" video="mainVideo-asmblox" id="subtitle"]] -[[!template new="1" text="I have a simple demo prepared." start="00:09:35.200" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="This is a game of tic-tac-toe." start="00:09:38.400" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Let me show this real fast." start="00:09:41.880" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="It's an extremely simple implementation," start="00:09:44.800" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="but it follows the same principles" start="00:09:49.200" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="that I used in asm-blox." start="00:09:51.466" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="First, we have the state defined in variables." start="00:09:53.600" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Here we have two pieces of state." start="00:09:57.680" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="We have which player's turn it is" start="00:09:59.560" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and the state of the game board." start="00:10:01.600" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="The player turn can be nil if it's empty," start="00:10:03.120" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="the string "x" or the string "o"." start="00:10:06.640" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Then the game board is a list of nine board elements." start="00:10:08.760" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="So that's the state." start="00:10:14.240" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Then we have a helper function." start="00:10:16.960" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="You can go into the details," start="00:10:18.120" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="but it just returns true" start="00:10:19.440" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="if the board has a winning player." start="00:10:21.000" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Part two is the rendering function." start="00:10:25.600" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Only based off of the game state," start="00:10:30.040" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="we have a function that erases the buffer" start="00:10:32.800" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and draws this from scratch." start="00:10:36.720" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="That's this part right here." start="00:10:40.280" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Lastly, we have the action." start="00:10:45.320" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="We have one action which is bound to RET," start="00:10:46.720" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and it places a player token." start="00:10:51.920" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Once it places a player token," start="00:10:55.840" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="it rerenders the board," start="00:10:59.920" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and all the rerendering is handled by this function." start="00:11:03.120" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Then we have just creating of the mode" start="00:11:06.880" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and initialization function." start="00:11:12.480" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="With these three steps" start="00:11:14.680" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="it clearly separates out all of the state," start="00:11:16.680" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="the rendering, and the actions," start="00:11:20.640" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and it makes implementing it very simple." start="00:11:22.960" video="mainVideo-asmblox" id="subtitle"]] -[[!template new="1" text="One trick that's used here and that I use" start="00:11:25.880" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="in my asm-blox game is that" start="00:11:29.640" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="when I render the board," start="00:11:32.383" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="I propertize the text to contain extra information." start="00:11:33.317" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="For example, here, each cell has" start="00:11:40.800" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="a tic-tac-toe index to indicate which number cell it is." start="00:11:45.080" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="This has index 0, 1, 2, all the way up to 8." start="00:11:49.400" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="That way, for placing, the only thing it has to do" start="00:11:53.640" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="is just look at its position" start="00:11:58.640" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="based off of the text property." start="00:12:01.200" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="It makes implementation extremely simple." start="00:12:04.960" video="mainVideo-asmblox" id="subtitle"]] -[[!template new="1" text="Next up, we have the implementation of the code cells." start="00:12:07.800" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="If you notice, here it's kind of weird" start="00:12:14.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="how it's like a buffer, but each cell kind of acts" start="00:12:16.960" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="like its own buffer, and it has its own limits." start="00:12:21.000" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="All of the Emacs editing--" start="00:12:25.760" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="well, some of the Emacs editing commands kind of work," start="00:12:27.600" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="like beginning-of-line, end-of-line, end-of-buffer." start="00:12:30.760" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="How is that done?" start="00:12:35.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Well, it's all just a trick, actually." start="00:12:38.240" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Each cell has text properties of which line it's at" start="00:12:41.760" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and its cell coordinates." start="00:12:47.280" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Whenever a key is pressed for editing, moving lines--" start="00:12:48.800" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="there's even kind of more complicated things" start="00:12:54.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="like switching cells around--" start="00:12:58.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="so all of that," start="00:13:00.600" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="it knows which position it's in," start="00:13:03.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="it knows what cell it's in," start="00:13:05.200" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and then it copies the text of the cell," start="00:13:08.080" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="because remember, the contents of the cell" start="00:13:12.880" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="are stored in internal state." start="00:13:16.320" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="It copies that cell contents into a temporary buffer." start="00:13:18.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="It then moves the point to whichever line it was" start="00:13:23.000" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="in the game board." start="00:13:27.960" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="It performs the action." start="00:13:31.160" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="It makes sure that the resulting text isn't" start="00:13:33.000" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="longer than the cell width or the cell height." start="00:13:36.200" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="If everything checks out," start="00:13:40.160" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="it updates the state and calls a re-render." start="00:13:42.040" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="So there's nothing going on in here" start="00:13:45.120" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="that's, like, actually inserting a letter A." start="00:13:48.440" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="It's all updating the state and causing a re-render." start="00:13:51.080" video="mainVideo-asmblox" id="subtitle"]] -[[!template new="1" text="So this makes things like certain" start="00:14:00.920" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="internal Emacs editing constructs" start="00:14:03.640" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="pretty hard to use, like undoing." start="00:14:06.480" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Normally the undoing construct" start="00:14:09.120" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="works off the contents of the buffer." start="00:14:12.200" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="But if your buffer is actually just" start="00:14:15.120" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="a reflection of the internal state," start="00:14:17.840" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="then how does undoing work?" start="00:14:20.080" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Well, it pretty much is kind of a hack." start="00:14:21.440" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="I mean, undoing is here," start="00:14:24.880" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="but it's pretty much redone" start="00:14:27.040" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="in a not so configurable, not so modifiable way." start="00:14:32.680" video="mainVideo-asmblox" id="subtitle"]] -[[!template new="1" text="Pretty much everything is like that," start="00:14:37.560" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="from these parentheses highlighting..." start="00:14:40.080" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Normally, parentheses highlighting" start="00:14:42.440" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="would be kind of weird," start="00:14:46.320" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="with cross-line parentheses and everything." start="00:14:47.244" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="All of that had to be redone." start="00:14:49.840" video="mainVideo-asmblox" id="subtitle"]] -[[!template new="1" text="Another point about how this is implemented" start="00:14:52.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="is the assembly text to executable code." start="00:14:58.160" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="If you're familiar with WebAssembly" start="00:15:02.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="you might have encountered a tool wat-wasm." start="00:15:05.800" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="It basically converts the WebAssembly text format" start="00:15:10.720" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="to byte code." start="00:15:16.440" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="And what I do here... It goes through a similar process." start="00:15:18.280" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Normally, when you're writing this text format," start="00:15:22.440" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="you can nest things as deeply as you want." start="00:15:28.000" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Basically, what happens is it flattens out everything." start="00:15:30.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="It kind of knows the order" start="00:15:33.800" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="that all these things are going to get executed," start="00:15:35.920" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and then it puts it into one single line" start="00:15:38.160" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="that it can just run through and execute." start="00:15:40.680" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="The same thing for the loops and blocks." start="00:15:44.120" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="It internally generates labels and jump statements." start="00:15:48.360" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="So that concludes this presentation." start="00:15:52.240" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="Thank you for listening," start="00:15:58.640" video="mainVideo-asmblox" id="subtitle"]] -[[!template text="and I hope you enjoy the rest of the conference." start="00:15:59.667" video="mainVideo-asmblox" id="subtitle"]] +[[!template new="1" text="""Hi, I'm Zach and today I'll be giving""" start="00:00:00.000" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""a presentation on asm-blox,""" start="00:00:03.800" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""a programming game inspired by WebAssembly.""" start="00:00:05.320" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""So programming games came into prominence""" start="00:00:08.960" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""about a decade ago and are loved for providing""" start="00:00:10.840" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""interesting programming challenges""" start="00:00:13.160" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""without all the messiness of real world programming.""" start="00:00:14.760" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""I wanted to make a programming game""" start="00:00:17.160" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and I decided to base it off of TIS-100,""" start="00:00:19.960" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""having a pretty basic UI.""" start="00:00:24.880" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""It seemed pretty doable in Emacs.""" start="00:00:28.240" video="mainVideo-asmblox" id="subtitle"]] +[[!template new="1" text="""TIS 100 is a programming game""" start="00:00:30.680" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""where you write a fictional assembly language""" start="00:00:33.160" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""into a grid of cells which can each""" start="00:00:35.760" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""communicate with one another,""" start="00:00:37.280" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""you're tasked with solving""" start="00:00:39.480" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""fairly simple CS 101 like problems.""" start="00:00:41.200" video="mainVideo-asmblox" id="subtitle"]] +[[!template new="1" text="""To mix things up a bit I decided to base""" start="00:00:44.960" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""the language of asm-blox off of""" start="00:00:48.440" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""WebAssembly, which is stack based,""" start="00:00:49.800" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""as opposed to TIS-100 which is registered based.""" start="00:00:52.520" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Here you can see the same program""" start="00:00:55.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""written in the game TIS-100,""" start="00:00:59.200" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""what it looks like in asm-blox,""" start="00:01:01.680" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and the original WebAssembly that it's based off of.""" start="00:01:03.960" video="mainVideo-asmblox" id="subtitle"]] +[[!template new="1" text="""With that said, let's get into a demo.""" start="00:01:08.040" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""This is the game board.""" start="00:01:10.640" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""It's a 4 by 3 grid.""" start="00:01:12.240" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Each cell has a stack of size 4.""" start="00:01:14.120" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""First off, I'll show some of the stack editing commands.""" start="00:01:16.840" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""We can add a value with the const function.""" start="00:01:20.280" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Here we're adding two values to this stack""" start="00:01:23.760" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""to get added, and eventually the stack gets overflowed.""" start="00:01:27.480" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""We can fix that as follows with the clear command,""" start="00:01:33.400" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""so that clears the stack.""" start="00:01:37.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""We can duplicate values on the stack.""" start="00:01:40.720" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""This duplicates the item at the bottom of the stack.""" start="00:01:43.200" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""10 gets put on, 20 gets put on,""" start="00:01:45.600" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""then 10 will get duplicated""" start="00:01:48.880" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and put on the top of the stack.""" start="00:01:50.200" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""We can increment. For example, this increments""" start="00:01:52.680" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""the second to bottom, the second to bottom""" start="00:01:55.920" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""from the stack.""" start="00:01:58.760" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""So 10, 20, increment that, clear.""" start="00:01:59.920" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""That's basic stack operations.""" start="00:02:04.400" video="mainVideo-asmblox" id="subtitle"]] +[[!template new="1" text="""Next up, we have numeric commands.""" start="00:02:07.640" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""For example, here, if we add "add",""" start="00:02:11.000" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""it pops two values off the stack,""" start="00:02:12.560" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""adds them, and pushes the result on.""" start="00:02:14.680" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Another way we can write this is as follows.""" start="00:02:17.080" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""We can have the add here""" start="00:02:20.680" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and then nest the two constants,""" start="00:02:22.480" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and then this does the same thing.""" start="00:02:26.400" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""First, the inner constant operations run,""" start="00:02:28.520" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and then the outer add operation runs.""" start="00:02:31.720" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""We can nest as deeply as we want.""" start="00:02:35.520" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""There's also subtraction, multiplication, and whatnot.""" start="00:02:40.280" video="mainVideo-asmblox" id="subtitle"]] +[[!template new="1" text="""Next up are Boolean operations.""" start="00:02:44.680" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Zero counts as true.""" start="00:02:46.480" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Anything else--sorry, zero counts as false.""" start="00:02:49.080" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Anything else is true.""" start="00:02:51.720" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""For example, this would give us false and true,""" start="00:02:52.760" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""so that result should be false.""" start="00:03:01.840" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Zero gets put on the stack,""" start="00:03:04.040" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""one gets put on, and then the "and" operation.""" start="00:03:06.120" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""So there's also or, not,""" start="00:03:08.160" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and various numerical comparison operations""" start="00:03:12.840" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""like greater than and less than.""" start="00:03:17.760" video="mainVideo-asmblox" id="subtitle"]] +[[!template new="1" text="""Next up are the port operations.""" start="00:03:21.400" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""We can send values to other cells as follows.""" start="00:03:22.880" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Here we create a value""" start="00:03:27.320" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and then send it right.""" start="00:03:29.600" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Let's run this.""" start="00:03:33.640" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""The 10 goes on the stack,""" start="00:03:35.040" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and then it gets sent to the right.""" start="00:03:37.480" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Here it's waiting for this cell to pick it up.""" start="00:03:38.480" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""It can pick it up just as follows.""" start="00:03:41.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""So left... and then why don't we have it""" start="00:03:44.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""drop that value after it gets it.""" start="00:03:47.480" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""So the 10 gets sent to the right.""" start="00:03:49.520" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""This one picks it up and drops it.""" start="00:03:53.920" video="mainVideo-asmblox" id="subtitle"]] +[[!template new="1" text="""Lastly, we have control flow,""" start="00:04:00.240" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""which is a bit tricky,""" start="00:04:03.200" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""but with this visual,""" start="00:04:04.280" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""it helps explain it.""" start="00:04:06.880" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""There are two block constructs, "block" and "loop",""" start="00:04:08.440" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and there's two jumping constructs, "br" and "brif".""" start="00:04:12.280" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""So if "loop" is jumped to,""" start="00:04:16.880" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""the control flow goes to the beginning,""" start="00:04:23.120" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""the top of the loop.""" start="00:04:25.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""If a block is jumped to,""" start="00:04:26.520" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""it goes to the end of the block,""" start="00:04:28.640" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and these various blocks""" start="00:04:31.520" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""are identified by their level of nestedness.""" start="00:04:33.640" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""From the point of view of this jump statement,""" start="00:04:36.520" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""this "br" statement, this is block level 0,""" start="00:04:40.640" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""this is 1, this is 2.""" start="00:04:45.160" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""So here, "br 1" would be referring to this loop.""" start="00:04:46.440" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""What this [br 1] would do is,""" start="00:04:49.560" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""it would jump to this loop right here.""" start="00:04:51.080" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""If we were to do this [br 2], what this would do is,""" start="00:04:54.000" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""this would jump past this block right here.""" start="00:04:57.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""So as another example, this right here,""" start="00:05:02.680" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""this is a loop that generates increasing numbers.""" start="00:05:09.880" video="mainVideo-asmblox" id="subtitle"]] +[[!template new="1" text="""Let's see. Next up, we have modules.""" start="00:05:15.720" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""This is an example of a stack module.""" start="00:05:22.640" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""In addition to stack, there's also heaps.""" start="00:05:26.280" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""What this does is it allows us to create""" start="00:05:28.760" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""an extra stack that we can push and pop items onto.""" start="00:05:34.560" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""This one can have as large size as we need.""" start="00:05:38.080" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Here it has a size of 20.""" start="00:05:41.240" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""It's taking values from up""" start="00:05:43.800" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and exposing those values on the left.""" start="00:05:46.400" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""This loop right here, it generates numbers,""" start="00:05:51.080" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and it's putting them onto the stack.""" start="00:05:57.080" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""We can see here that those numbers""" start="00:05:59.160" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""are being exposed to this cell right here.""" start="00:06:00.920" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""It's just taking values, and eventually,""" start="00:06:03.200" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""it's going to overflow and cause an error.""" start="00:06:07.040" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""That finishes the basic commands.""" start="00:06:11.200" video="mainVideo-asmblox" id="subtitle"]] +[[!template new="1" text="""Why don't we try solving this puzzle.""" start="00:06:14.480" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""The puzzle description is right here.""" start="00:06:16.480" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""We want to read a value from I.""" start="00:06:21.320" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Send 1 to G if I is greater than 0.""" start="00:06:23.280" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Send 1 to E if it's equal to 0.""" start="00:06:28.480" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Send 1 to L if it's less than 0.""" start="00:06:30.800" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""And then all the other ones, we send 0 to.""" start="00:06:32.440" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""First things first, let's send the value we get""" start="00:06:35.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""from the input down as follows.""" start="00:06:40.920" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Let's send that value right.""" start="00:06:44.400" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""You get from up.""" start="00:06:49.680" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Okay. So next, we're getting a value on the left.""" start="00:06:51.240" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Now we want to compare if this number is greater than 0.""" start="00:06:54.320" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""If it's greater than 0, we send 1 to G.""" start="00:06:58.040" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Let's perform the greater than operation""" start="00:06:59.800" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""on that item we just got, and we're comparing it to 0.""" start="00:07:03.280" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Now that result, we're going to send down,""" start="00:07:08.080" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and we're going to send this original value""" start="00:07:11.680" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""we got from here to the right.""" start="00:07:13.880" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Here, we do a similar step.""" start="00:07:16.880" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""We get the value from the left,""" start="00:07:19.000" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""but this time, we have to do an equal operation.""" start="00:07:20.240" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Is that number we got equal to 0?""" start="00:07:22.920" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""We send that result down,""" start="00:07:25.760" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and then send this number to the right.""" start="00:07:28.960" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Lastly, we get this number from the left.""" start="00:07:32.880" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Here, we need to compare if it's less than 0.""" start="00:07:38.040" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""We send that result down,""" start="00:07:42.400" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and now lastly, we drop that remaining value.""" start="00:07:45.640" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Okay, let's--oh, and then lastly,""" start="00:07:50.280" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""we need to send down the value we get up.""" start="00:07:53.080" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Send down, up, send down, up.""" start="00:07:56.040" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Okay, so let's try running this.""" start="00:08:02.560" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Let's see. We notice that""" start="00:08:04.760" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""the numbers are coming in from I.""" start="00:08:08.920" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""They're going through our various conditions""" start="00:08:10.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and should be sending all the correct values.""" start="00:08:14.200" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""It looks like we're not getting any errors so far.""" start="00:08:18.160" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Let's speed this up.""" start="00:08:23.560" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""That completes the puzzle.""" start="00:08:26.680" video="mainVideo-asmblox" id="subtitle"]] +[[!template new="1" text="""Now let's get into some of the implementation details.""" start="00:08:33.040" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""The first thing is the game loop.""" start="00:08:42.000" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""The game loop is... So this is actually extremely simple.""" start="00:08:46.320" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""All the state for the entire game""" start="00:08:50.560" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""is stored in just a few variables.""" start="00:08:52.320" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""There's one variable storing""" start="00:08:54.400" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""the text of each cell as a vector of strings.""" start="00:08:56.480" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""There's a single function""" start="00:09:01.400" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""that renders the entire game, the entire board.""" start="00:09:06.280" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""There's a single function that would render""" start="00:09:09.080" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""this entire screen based off of the state,""" start="00:09:11.120" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and then the game waits for you to press a key.""" start="00:09:13.920" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""The key usually, depending on what action you perform,""" start="00:09:19.240" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""updates the state and causes a re-render.""" start="00:09:24.120" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""It's an extremely simple game loop,""" start="00:09:27.040" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""but it makes implementing it pretty easy.""" start="00:09:29.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""To demonstrate how this game loop works,""" start="00:09:32.800" video="mainVideo-asmblox" id="subtitle"]] +[[!template new="1" text="""I have a simple demo prepared.""" start="00:09:35.200" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""This is a game of tic-tac-toe.""" start="00:09:38.400" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Let me show this real fast.""" start="00:09:41.880" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""It's an extremely simple implementation,""" start="00:09:44.800" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""but it follows the same principles""" start="00:09:49.200" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""that I used in asm-blox.""" start="00:09:51.466" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""First, we have the state defined in variables.""" start="00:09:53.600" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Here we have two pieces of state.""" start="00:09:57.680" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""We have which player's turn it is""" start="00:09:59.560" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and the state of the game board.""" start="00:10:01.600" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""The player turn can be nil if it's empty,""" start="00:10:03.120" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""the string "x" or the string "o".""" start="00:10:06.640" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Then the game board is a list of nine board elements.""" start="00:10:08.760" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""So that's the state.""" start="00:10:14.240" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Then we have a helper function.""" start="00:10:16.960" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""You can go into the details,""" start="00:10:18.120" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""but it just returns true""" start="00:10:19.440" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""if the board has a winning player.""" start="00:10:21.000" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Part two is the rendering function.""" start="00:10:25.600" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Only based off of the game state,""" start="00:10:30.040" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""we have a function that erases the buffer""" start="00:10:32.800" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and draws this from scratch.""" start="00:10:36.720" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""That's this part right here.""" start="00:10:40.280" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Lastly, we have the action.""" start="00:10:45.320" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""We have one action which is bound to RET,""" start="00:10:46.720" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and it places a player token.""" start="00:10:51.920" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Once it places a player token,""" start="00:10:55.840" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""it rerenders the board,""" start="00:10:59.920" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and all the rerendering is handled by this function.""" start="00:11:03.120" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Then we have just creating of the mode""" start="00:11:06.880" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and initialization function.""" start="00:11:12.480" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""With these three steps""" start="00:11:14.680" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""it clearly separates out all of the state,""" start="00:11:16.680" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""the rendering, and the actions,""" start="00:11:20.640" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and it makes implementing it very simple.""" start="00:11:22.960" video="mainVideo-asmblox" id="subtitle"]] +[[!template new="1" text="""One trick that's used here and that I use""" start="00:11:25.880" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""in my asm-blox game is that""" start="00:11:29.640" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""when I render the board,""" start="00:11:32.383" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""I propertize the text to contain extra information.""" start="00:11:33.317" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""For example, here, each cell has""" start="00:11:40.800" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""a tic-tac-toe index to indicate which number cell it is.""" start="00:11:45.080" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""This has index 0, 1, 2, all the way up to 8.""" start="00:11:49.400" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""That way, for placing, the only thing it has to do""" start="00:11:53.640" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""is just look at its position""" start="00:11:58.640" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""based off of the text property.""" start="00:12:01.200" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""It makes implementation extremely simple.""" start="00:12:04.960" video="mainVideo-asmblox" id="subtitle"]] +[[!template new="1" text="""Next up, we have the implementation of the code cells.""" start="00:12:07.800" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""If you notice, here it's kind of weird""" start="00:12:14.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""how it's like a buffer, but each cell kind of acts""" start="00:12:16.960" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""like its own buffer, and it has its own limits.""" start="00:12:21.000" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""All of the Emacs editing--""" start="00:12:25.760" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""well, some of the Emacs editing commands kind of work,""" start="00:12:27.600" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""like beginning-of-line, end-of-line, end-of-buffer.""" start="00:12:30.760" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""How is that done?""" start="00:12:35.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Well, it's all just a trick, actually.""" start="00:12:38.240" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Each cell has text properties of which line it's at""" start="00:12:41.760" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and its cell coordinates.""" start="00:12:47.280" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Whenever a key is pressed for editing, moving lines--""" start="00:12:48.800" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""there's even kind of more complicated things""" start="00:12:54.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""like switching cells around--""" start="00:12:58.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""so all of that,""" start="00:13:00.600" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""it knows which position it's in,""" start="00:13:03.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""it knows what cell it's in,""" start="00:13:05.200" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and then it copies the text of the cell,""" start="00:13:08.080" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""because remember, the contents of the cell""" start="00:13:12.880" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""are stored in internal state.""" start="00:13:16.320" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""It copies that cell contents into a temporary buffer.""" start="00:13:18.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""It then moves the point to whichever line it was""" start="00:13:23.000" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""in the game board.""" start="00:13:27.960" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""It performs the action.""" start="00:13:31.160" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""It makes sure that the resulting text isn't""" start="00:13:33.000" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""longer than the cell width or the cell height.""" start="00:13:36.200" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""If everything checks out,""" start="00:13:40.160" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""it updates the state and calls a re-render.""" start="00:13:42.040" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""So there's nothing going on in here""" start="00:13:45.120" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""that's, like, actually inserting a letter A.""" start="00:13:48.440" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""It's all updating the state and causing a re-render.""" start="00:13:51.080" video="mainVideo-asmblox" id="subtitle"]] +[[!template new="1" text="""So this makes things like certain""" start="00:14:00.920" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""internal Emacs editing constructs""" start="00:14:03.640" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""pretty hard to use, like undoing.""" start="00:14:06.480" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Normally the undoing construct""" start="00:14:09.120" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""works off the contents of the buffer.""" start="00:14:12.200" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""But if your buffer is actually just""" start="00:14:15.120" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""a reflection of the internal state,""" start="00:14:17.840" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""then how does undoing work?""" start="00:14:20.080" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Well, it pretty much is kind of a hack.""" start="00:14:21.440" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""I mean, undoing is here,""" start="00:14:24.880" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""but it's pretty much redone""" start="00:14:27.040" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""in a not so configurable, not so modifiable way.""" start="00:14:32.680" video="mainVideo-asmblox" id="subtitle"]] +[[!template new="1" text="""Pretty much everything is like that,""" start="00:14:37.560" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""from these parentheses highlighting...""" start="00:14:40.080" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Normally, parentheses highlighting""" start="00:14:42.440" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""would be kind of weird,""" start="00:14:46.320" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""with cross-line parentheses and everything.""" start="00:14:47.244" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""All of that had to be redone.""" start="00:14:49.840" video="mainVideo-asmblox" id="subtitle"]] +[[!template new="1" text="""Another point about how this is implemented""" start="00:14:52.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""is the assembly text to executable code.""" start="00:14:58.160" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""If you're familiar with WebAssembly""" start="00:15:02.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""you might have encountered a tool wat-wasm.""" start="00:15:05.800" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""It basically converts the WebAssembly text format""" start="00:15:10.720" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""to byte code.""" start="00:15:16.440" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""And what I do here... It goes through a similar process.""" start="00:15:18.280" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Normally, when you're writing this text format,""" start="00:15:22.440" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""you can nest things as deeply as you want.""" start="00:15:28.000" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Basically, what happens is it flattens out everything.""" start="00:15:30.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""It kind of knows the order""" start="00:15:33.800" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""that all these things are going to get executed,""" start="00:15:35.920" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and then it puts it into one single line""" start="00:15:38.160" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""that it can just run through and execute.""" start="00:15:40.680" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""The same thing for the loops and blocks.""" start="00:15:44.120" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""It internally generates labels and jump statements.""" start="00:15:48.360" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""So that concludes this presentation.""" start="00:15:52.240" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""Thank you for listening,""" start="00:15:58.640" video="mainVideo-asmblox" id="subtitle"]] +[[!template text="""and I hope you enjoy the rest of the conference.""" start="00:15:59.667" video="mainVideo-asmblox" id="subtitle"]] + +Captioner: sachac Questions or comments? Please e-mail [zacromero@posteo.net](mailto:zacromero@posteo.net?subject=Comment%20for%20EmacsConf%202022%20asmblox%3A%20asm-blox%3A%20a%20game%20based%20on%20WebAssembly%20that%20no%20one%20asked%20for) diff --git a/2022/info/asmblox-before.md b/2022/info/asmblox-before.md index 74ad22ff..ca978499 100644 --- a/2022/info/asmblox-before.md +++ b/2022/info/asmblox-before.md @@ -3,15 +3,15 @@ In this talk, Zachary Romero shares a game he wrote and how he made it. Afterwar The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="asmblox"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect stroke-width="3" x="180" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 3:50- 3:55 Short hyperlinks to Python docs</title> <rect x="643" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(648,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect stroke-width="3" x="180" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] -Format: 17-min talk followed by live Q&A (<https://emacsconf.org/current/asmblox/room>) +Format: 17-min talk followed by live Q&A (done) Etherpad: <https://pad.emacsconf.org/2022-asmblox> Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Q&A open for participation -<div>Times in different timezones:</div><div class="times" start="2022-12-03T15:55:00Z" end="2022-12-03T16:15:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~10:55 AM - 11:15 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~9:55 AM - 10:15 AM CST (US/Central)<br />Saturday, Dec 3 2022, ~8:55 AM - 9:15 AM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~7:55 AM - 8:15 AM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~3:55 PM - 4:15 PM UTC <br />Saturday, Dec 3 2022, ~4:55 PM - 5:15 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~5:55 PM - 6:15 PM EET (Europe/Athens)<br />Saturday, Dec 3 2022, ~9:25 PM - 9:45 PM IST (Asia/Kolkata)<br />Saturday, Dec 3 2022, ~11:55 PM - 12:15 AM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~12:55 AM - 1:15 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/dev/">Find out how to watch and participate</a></div> +Status: Q&A finished, IRC and pad will be archived on this page + [[!template id="vid" vidid="asmblox-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-asmblox--asmblox-a-game-based-on-webassembly-that-no-one-asked-for--zachary-romero--main.webm" poster="https://media.emacsconf.org/2022/emacsconf-2022-asmblox--asmblox-a-game-based-on-webassembly-that-no-one-asked-for--zachary-romero--main.png" captions="""<track label="English" kind="captions" srclang="en" src="/2022/captions/emacsconf-2022-asmblox--asmblox-a-game-based-on-webassembly-that-no-one-asked-for--zachary-romero--main.vtt" default />""" size="240M" duration="16:07" other_resources="""[Download --main.webm (238MB)](https://media.emacsconf.org/2022/emacsconf-2022-asmblox--asmblox-a-game-based-on-webassembly-that-no-one-asked-for--zachary-romero--main.webm) diff --git a/2022/info/async-before.md b/2022/info/async-before.md index d5aa0b5c..97d8ba11 100644 --- a/2022/info/async-before.md +++ b/2022/info/async-before.md @@ -1,7 +1,7 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="async"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect stroke-width="3" x="501" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect stroke-width="3" x="501" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/buddy-after.md b/2022/info/buddy-after.md index e951cdf5..b3f6b18f 100644 --- a/2022/info/buddy-after.md +++ b/2022/info/buddy-after.md @@ -4,149 +4,151 @@ <a name="buddy-mainVideo-transcript"></a> # Transcript -[[!template new="1" text="Hello, welcome to my talk, the Emacs Buddy Initiative." start="00:00:00.000" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Who am I?" start="00:00:03.920" video="mainVideo-buddy" id="subtitle"]] -[[!template text="I'm Andrea. I work as a Clojure Software Engineer" start="00:00:04.760" video="mainVideo-buddy" id="subtitle"]] -[[!template text="somewhere in the middle of the UK." start="00:00:07.000" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And I started with Emacs during my PhD," start="00:00:09.000" video="mainVideo-buddy" id="subtitle"]] -[[!template text="thanks to my PhD supervisor" start="00:00:12.520" video="mainVideo-buddy" id="subtitle"]] -[[!template text="that introduced me to this tool." start="00:00:14.120" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And from now and from then," start="00:00:15.760" video="mainVideo-buddy" id="subtitle"]] -[[!template text="I am basically using it for everything." start="00:00:17.280" video="mainVideo-buddy" id="subtitle"]] -[[!template text="You can find more about this everything" start="00:00:20.320" video="mainVideo-buddy" id="subtitle"]] -[[!template text="at ag91.github.io, that is my blog." start="00:00:22.160" video="mainVideo-buddy" id="subtitle"]] -[[!template text="So let's get into the talk." start="00:00:26.520" video="mainVideo-buddy" id="subtitle"]] -[[!template new="1" text="Why Emacs Buddy?" start="00:00:27.900" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Emacs Buddy is an initiative to bring us together." start="00:00:29.480" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And the reason is because Emacs is a limitless tool." start="00:00:32.920" video="mainVideo-buddy" id="subtitle"]] -[[!template text="So you can keep learning about it," start="00:00:36.560" video="mainVideo-buddy" id="subtitle"]] -[[!template text="you can keep expanding it," start="00:00:38.800" video="mainVideo-buddy" id="subtitle"]] -[[!template text="and also takes time to get up to speed." start="00:00:41.040" video="mainVideo-buddy" id="subtitle"]] -[[!template text="So you may actually extend Emacs" start="00:00:44.800" video="mainVideo-buddy" id="subtitle"]] -[[!template text="or you may actually get introduced," start="00:00:48.680" video="mainVideo-buddy" id="subtitle"]] -[[!template text="start using Emacs," start="00:00:50.620" video="mainVideo-buddy" id="subtitle"]] -[[!template text="but you could fall into all the traps" start="00:00:52.320" video="mainVideo-buddy" id="subtitle"]] -[[!template text="or all the wasted times that other users have already gone through." start="00:00:56.360" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And so, since there are a lot of amazing people" start="00:01:00.880" video="mainVideo-buddy" id="subtitle"]] -[[!template text="in the Emacs community," start="00:01:04.600" video="mainVideo-buddy" id="subtitle"]] -[[!template text="why do every time redo the same error?" start="00:01:07.360" video="mainVideo-buddy" id="subtitle"]] -[[!template text="So let's bring us together." start="00:01:10.120" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And it would be amazing to get a one-to-one relation." start="00:01:12.160" video="mainVideo-buddy" id="subtitle"]] -[[!template text="So I have somebody that actually knows what you want to do," start="00:01:17.480" video="mainVideo-buddy" id="subtitle"]] -[[!template text="what you want to achieve with Emacs," start="00:01:21.560" video="mainVideo-buddy" id="subtitle"]] -[[!template text="and supports you because they have done a similar path to yours." start="00:01:23.400" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And so they can remove some of the obstacles for you." start="00:01:27.440" video="mainVideo-buddy" id="subtitle"]] -[[!template new="1" text="So what can you expect?" start="00:01:32.720" video="mainVideo-buddy" id="subtitle"]] -[[!template text="The main thing is guidance on your Emacs journey," start="00:01:34.480" video="mainVideo-buddy" id="subtitle"]] -[[!template text="because the Emacs journey is infinite, it doesn't really end." start="00:01:37.880" video="mainVideo-buddy" id="subtitle"]] -[[!template text="But the farther you go," start="00:01:41.280" video="mainVideo-buddy" id="subtitle"]] -[[!template text="the more value you get from this amazing tool." start="00:01:44.080" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And that helps you save time." start="00:01:46.800" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And at the same time, you can meet like-minded people." start="00:01:50.360" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And so you can learn about Emacs or about your context," start="00:01:54.280" video="mainVideo-buddy" id="subtitle"]] -[[!template text="if they are in, for example, if you are a physicist," start="00:01:59.080" video="mainVideo-buddy" id="subtitle"]] -[[!template text="they are physicists or they are interested in the field." start="00:02:02.920" video="mainVideo-buddy" id="subtitle"]] -[[!template text="You may not only learn about Emacs," start="00:02:07.560" video="mainVideo-buddy" id="subtitle"]] -[[!template text="but you can learn also something about the field." start="00:02:09.160" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And anyway, the idea is that you can move forward together." start="00:02:11.880" video="mainVideo-buddy" id="subtitle"]] -[[!template new="1" text="Somebody asked, why not just mailing lists or Reddit?" start="00:02:17.040" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Well, the point is that mailing list is many people" start="00:02:20.400" video="mainVideo-buddy" id="subtitle"]] -[[!template text="can help you solve one issue that you have." start="00:02:24.640" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And that naturally doesn't become a discussion" start="00:02:28.520" video="mainVideo-buddy" id="subtitle"]] -[[!template text="of where you are from, what are you trying to achieve," start="00:02:31.560" video="mainVideo-buddy" id="subtitle"]] -[[!template text="and where you want to move forward with using this editor" start="00:02:35.280" video="mainVideo-buddy" id="subtitle"]] -[[!template text="or using this tool." start="00:02:40.000" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Instead, here, we want something more personal," start="00:02:42.280" video="mainVideo-buddy" id="subtitle"]] -[[!template text="something more like you tell your story." start="00:02:45.640" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And if I can help you achieve what you need," start="00:02:48.640" video="mainVideo-buddy" id="subtitle"]] -[[!template text="I am also interested in your story as a buddy." start="00:02:53.880" video="mainVideo-buddy" id="subtitle"]] -[[!template new="1" text="So given that, how do you get in touch with a buddy?" start="00:02:58.960" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Well, the thing is easy." start="00:03:03.360" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Just ping me at this email, andrea-dev@hotmail.com." start="00:03:04.680" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And I can put you in touch with one of the buddies" start="00:03:12.720" video="mainVideo-buddy" id="subtitle"]] -[[!template text="that are available." start="00:03:15.400" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Or you can contact them personally, directly," start="00:03:16.760" video="mainVideo-buddy" id="subtitle"]] -[[!template text="because on the web page, on the Emacs Buddy web page," start="00:03:20.200" video="mainVideo-buddy" id="subtitle"]] -[[!template text="there are links to their material or their websites." start="00:03:26.280" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And sometimes you can find the contact yourself." start="00:03:32.560" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Anyway, I am a facilitator." start="00:03:35.600" video="mainVideo-buddy" id="subtitle"]] -[[!template text="So if you contact me, I will find the contact for the person" start="00:03:37.160" video="mainVideo-buddy" id="subtitle"]] -[[!template text="that you want to get in touch." start="00:03:41.920" video="mainVideo-buddy" id="subtitle"]] -[[!template text="You can also get in touch with me." start="00:03:43.080" video="mainVideo-buddy" id="subtitle"]] -[[!template text="I'm a buddy myself." start="00:03:44.480" video="mainVideo-buddy" id="subtitle"]] -[[!template new="1" text="How did it go so far?" start="00:03:47.960" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Well, from when I started the initiative," start="00:03:49.600" video="mainVideo-buddy" id="subtitle"]] -[[!template text="more or less we had 10 buddies." start="00:03:52.480" video="mainVideo-buddy" id="subtitle"]] -[[!template text="We had 10 buddies that are available to help you" start="00:03:55.040" video="mainVideo-buddy" id="subtitle"]] -[[!template text="with your Emacs journey." start="00:03:58.720" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And I buddyed myself, or I got in touch" start="00:04:01.520" video="mainVideo-buddy" id="subtitle"]] -[[!template text="with people that wanted a buddy, about eight people." start="00:04:04.880" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Each of these conversations was quite interesting." start="00:04:10.680" video="mainVideo-buddy" id="subtitle"]] -[[!template new="1" text="I decided to paraphrase one." start="00:04:14.760" video="mainVideo-buddy" id="subtitle"]] -[[!template text="I had this user that got in touch and said:" start="00:04:19.640" video="mainVideo-buddy" id="subtitle"]] -[[!template text=""I used Emacs for 10 years." start="00:04:23.520" video="mainVideo-buddy" id="subtitle"]] -[[!template text="I'm curious about the initiative," start="00:04:25.560" video="mainVideo-buddy" id="subtitle"]] -[[!template text="and here is my GitHub that I started writing recently," start="00:04:27.280" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Elisp projects", projects in Elisp to extend Emacs." start="00:04:32.360" video="mainVideo-buddy" id="subtitle"]] -[[!template text="I looked at their code." start="00:04:37.680" video="mainVideo-buddy" id="subtitle"]] -[[!template text="I suggested, "Oh, why don't you use dash?" start="00:04:40.840" video="mainVideo-buddy" id="subtitle"]] -[[!template text="It's something that I'm familiar with." start="00:04:43.880" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Maybe you may like it as well."" start="00:04:45.300" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And then I started asking, "Oh, what do you do with Emacs?" start="00:04:49.440" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Have you tried a note taking tool like Org Roam?"" start="00:04:51.720" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And then the conversation started." start="00:04:56.000" video="mainVideo-buddy" id="subtitle"]] -[[!template text="So "yeah, I tried Org Roam version one." start="00:04:58.040" video="mainVideo-buddy" id="subtitle"]] -[[!template text="I use my own thing." start="00:05:00.200" video="mainVideo-buddy" id="subtitle"]] -[[!template text="But what is it..." start="00:05:01.200" video="mainVideo-buddy" id="subtitle"]] -[[!template text="I'm curious about version two." start="00:05:02.880" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Did you use it?" start="00:05:04.240" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Do you know about Luhmann?"" start="00:05:05.840" video="mainVideo-buddy" id="subtitle"]] -[[!template text="That is the inspiration of Org Roam" start="00:05:07.080" video="mainVideo-buddy" id="subtitle"]] -[[!template text="and the backlinking and stuff." start="00:05:09.862" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And then I started the conversation about that." start="00:05:13.240" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And we discussed about functional programming." start="00:05:15.480" video="mainVideo-buddy" id="subtitle"]] -[[!template text="We discussed a bit about philosophy and went on." start="00:05:18.360" video="mainVideo-buddy" id="subtitle"]] -[[!template text="And then this conversation is not currently going." start="00:05:23.280" video="mainVideo-buddy" id="subtitle"]] -[[!template text="So we arrived to a point in which it sort of died out." start="00:05:29.160" video="mainVideo-buddy" id="subtitle"]] -[[!template text="But if I want or if they want, they can ping me back." start="00:05:32.760" video="mainVideo-buddy" id="subtitle"]] -[[!template text="I can ping them." start="00:05:36.680" video="mainVideo-buddy" id="subtitle"]] -[[!template text="So it's sort of a reference of this person exists" start="00:05:37.440" video="mainVideo-buddy" id="subtitle"]] -[[!template text="and is an interesting person to chat with when I have something" start="00:05:40.800" video="mainVideo-buddy" id="subtitle"]] -[[!template text="to say to them." start="00:05:44.440" video="mainVideo-buddy" id="subtitle"]] -[[!template new="1" text="And what if you want to be a buddy?" start="00:05:48.360" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Well, if you want to be a buddy, it's easy as well." start="00:05:50.480" video="mainVideo-buddy" id="subtitle"]] -[[!template text="So basically, just open a PR on the Emacs buddy repository." start="00:05:54.280" video="mainVideo-buddy" id="subtitle"]] -[[!template text="That is something that I am maintaining at the moment." start="00:06:02.280" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Or simply send me the information." start="00:06:05.280" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Somebody just sent me an email with the information." start="00:06:07.760" video="mainVideo-buddy" id="subtitle"]] -[[!template text="I have created the commit to make it public available." start="00:06:10.000" video="mainVideo-buddy" id="subtitle"]] -[[!template text="The information is just your name, a summary," start="00:06:14.720" video="mainVideo-buddy" id="subtitle"]] -[[!template text="what kind of user you are so that you can attract" start="00:06:18.560" video="mainVideo-buddy" id="subtitle"]] -[[!template text="the right people to you, and a link to your material" start="00:06:21.560" video="mainVideo-buddy" id="subtitle"]] -[[!template text="so that if they are curious about your summary or about you," start="00:06:28.040" video="mainVideo-buddy" id="subtitle"]] -[[!template text="they can actually go and check and even contact you directly." start="00:06:31.960" video="mainVideo-buddy" id="subtitle"]] -[[!template text="If they contact via me, I will know your email anyway" start="00:06:35.560" video="mainVideo-buddy" id="subtitle"]] -[[!template text="from the PR you open." start="00:06:40.560" video="mainVideo-buddy" id="subtitle"]] -[[!template text="So that is all." start="00:06:44.320" video="mainVideo-buddy" id="subtitle"]] -[[!template text="There are ideas to maybe... if... this is basically" start="00:06:45.760" video="mainVideo-buddy" id="subtitle"]] -[[!template text="an advertisement for this initiative" start="00:06:53.040" video="mainVideo-buddy" id="subtitle"]] -[[!template text="so that we can get people that want to be helped" start="00:06:54.760" video="mainVideo-buddy" id="subtitle"]] -[[!template text="or people that want to help." start="00:06:57.640" video="mainVideo-buddy" id="subtitle"]] -[[!template text="It's building up organically, so no rush" start="00:07:01.200" video="mainVideo-buddy" id="subtitle"]] -[[!template text="to make this thing grow, escalate enormously." start="00:07:03.600" video="mainVideo-buddy" id="subtitle"]] -[[!template text="But for example, there are ideas to join this with the meetup" start="00:07:08.640" video="mainVideo-buddy" id="subtitle"]] -[[!template text="talk that is being happening in the conference." start="00:07:12.480" video="mainVideo-buddy" id="subtitle"]] -[[!template text="So for example, if you find out something very interesting," start="00:07:15.720" video="mainVideo-buddy" id="subtitle"]] -[[!template text="you can bring the discussion that you have with your buddy" start="00:07:19.520" video="mainVideo-buddy" id="subtitle"]] -[[!template text="into a meetup so that the group with which you speak is bigger." start="00:07:22.200" video="mainVideo-buddy" id="subtitle"]] -[[!template text="There are ideas like that." start="00:07:27.560" video="mainVideo-buddy" id="subtitle"]] -[[!template text="But first of all, just get in touch if you want to find" start="00:07:28.920" video="mainVideo-buddy" id="subtitle"]] -[[!template text="like-minded people that want to help you with your Emacs" start="00:07:33.120" video="mainVideo-buddy" id="subtitle"]] -[[!template text="journey or if you want to help others." start="00:07:36.600" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Thank you very much." start="00:07:38.920" video="mainVideo-buddy" id="subtitle"]] -[[!template text="Enjoy the rest of the talks and chat to you soon." start="00:07:39.800" video="mainVideo-buddy" id="subtitle"]] +[[!template new="1" text="""Hello, welcome to my talk, the Emacs Buddy Initiative.""" start="00:00:00.000" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Who am I?""" start="00:00:03.920" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""I'm Andrea. I work as a Clojure Software Engineer""" start="00:00:04.760" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""somewhere in the middle of the UK.""" start="00:00:07.000" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And I started with Emacs during my PhD,""" start="00:00:09.000" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""thanks to my PhD supervisor""" start="00:00:12.520" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""that introduced me to this tool.""" start="00:00:14.120" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And from now and from then,""" start="00:00:15.760" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""I am basically using it for everything.""" start="00:00:17.280" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""You can find more about this everything""" start="00:00:20.320" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""at ag91.github.io, that is my blog.""" start="00:00:22.160" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""So let's get into the talk.""" start="00:00:26.520" video="mainVideo-buddy" id="subtitle"]] +[[!template new="1" text="""Why Emacs Buddy?""" start="00:00:27.900" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Emacs Buddy is an initiative to bring us together.""" start="00:00:29.480" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And the reason is because Emacs is a limitless tool.""" start="00:00:32.920" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""So you can keep learning about it,""" start="00:00:36.560" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""you can keep expanding it,""" start="00:00:38.800" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""and also takes time to get up to speed.""" start="00:00:41.040" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""So you may actually extend Emacs""" start="00:00:44.800" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""or you may actually get introduced,""" start="00:00:48.680" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""start using Emacs,""" start="00:00:50.620" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""but you could fall into all the traps""" start="00:00:52.320" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""or all the wasted times that other users have already gone through.""" start="00:00:56.360" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And so, since there are a lot of amazing people""" start="00:01:00.880" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""in the Emacs community,""" start="00:01:04.600" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""why do every time redo the same error?""" start="00:01:07.360" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""So let's bring us together.""" start="00:01:10.120" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And it would be amazing to get a one-to-one relation.""" start="00:01:12.160" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""So I have somebody that actually knows what you want to do,""" start="00:01:17.480" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""what you want to achieve with Emacs,""" start="00:01:21.560" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""and supports you because they have done a similar path to yours.""" start="00:01:23.400" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And so they can remove some of the obstacles for you.""" start="00:01:27.440" video="mainVideo-buddy" id="subtitle"]] +[[!template new="1" text="""So what can you expect?""" start="00:01:32.720" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""The main thing is guidance on your Emacs journey,""" start="00:01:34.480" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""because the Emacs journey is infinite, it doesn't really end.""" start="00:01:37.880" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""But the farther you go,""" start="00:01:41.280" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""the more value you get from this amazing tool.""" start="00:01:44.080" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And that helps you save time.""" start="00:01:46.800" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And at the same time, you can meet like-minded people.""" start="00:01:50.360" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And so you can learn about Emacs or about your context,""" start="00:01:54.280" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""if they are in, for example, if you are a physicist,""" start="00:01:59.080" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""they are physicists or they are interested in the field.""" start="00:02:02.920" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""You may not only learn about Emacs,""" start="00:02:07.560" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""but you can learn also something about the field.""" start="00:02:09.160" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And anyway, the idea is that you can move forward together.""" start="00:02:11.880" video="mainVideo-buddy" id="subtitle"]] +[[!template new="1" text="""Somebody asked, why not just mailing lists or Reddit?""" start="00:02:17.040" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Well, the point is that mailing list is many people""" start="00:02:20.400" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""can help you solve one issue that you have.""" start="00:02:24.640" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And that naturally doesn't become a discussion""" start="00:02:28.520" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""of where you are from, what are you trying to achieve,""" start="00:02:31.560" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""and where you want to move forward with using this editor""" start="00:02:35.280" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""or using this tool.""" start="00:02:40.000" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Instead, here, we want something more personal,""" start="00:02:42.280" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""something more like you tell your story.""" start="00:02:45.640" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And if I can help you achieve what you need,""" start="00:02:48.640" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""I am also interested in your story as a buddy.""" start="00:02:53.880" video="mainVideo-buddy" id="subtitle"]] +[[!template new="1" text="""So given that, how do you get in touch with a buddy?""" start="00:02:58.960" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Well, the thing is easy.""" start="00:03:03.360" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Just ping me at this email, andrea-dev@hotmail.com.""" start="00:03:04.680" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And I can put you in touch with one of the buddies""" start="00:03:12.720" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""that are available.""" start="00:03:15.400" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Or you can contact them personally, directly,""" start="00:03:16.760" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""because on the web page, on the Emacs Buddy web page,""" start="00:03:20.200" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""there are links to their material or their websites.""" start="00:03:26.280" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And sometimes you can find the contact yourself.""" start="00:03:32.560" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Anyway, I am a facilitator.""" start="00:03:35.600" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""So if you contact me, I will find the contact for the person""" start="00:03:37.160" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""that you want to get in touch.""" start="00:03:41.920" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""You can also get in touch with me.""" start="00:03:43.080" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""I'm a buddy myself.""" start="00:03:44.480" video="mainVideo-buddy" id="subtitle"]] +[[!template new="1" text="""How did it go so far?""" start="00:03:47.960" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Well, from when I started the initiative,""" start="00:03:49.600" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""more or less we had 10 buddies.""" start="00:03:52.480" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""We had 10 buddies that are available to help you""" start="00:03:55.040" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""with your Emacs journey.""" start="00:03:58.720" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And I buddyed myself, or I got in touch""" start="00:04:01.520" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""with people that wanted a buddy, about eight people.""" start="00:04:04.880" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Each of these conversations was quite interesting.""" start="00:04:10.680" video="mainVideo-buddy" id="subtitle"]] +[[!template new="1" text="""I decided to paraphrase one.""" start="00:04:14.760" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""I had this user that got in touch and said:""" start="00:04:19.640" video="mainVideo-buddy" id="subtitle"]] +[[!template text=""""I used Emacs for 10 years.""" start="00:04:23.520" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""I'm curious about the initiative,""" start="00:04:25.560" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""and here is my GitHub that I started writing recently,""" start="00:04:27.280" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Elisp projects", projects in Elisp to extend Emacs.""" start="00:04:32.360" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""I looked at their code.""" start="00:04:37.680" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""I suggested, "Oh, why don't you use dash?""" start="00:04:40.840" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""It's something that I'm familiar with.""" start="00:04:43.880" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Maybe you may like it as well."""" start="00:04:45.300" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And then I started asking, "Oh, what do you do with Emacs?""" start="00:04:49.440" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Have you tried a note taking tool like Org Roam?"""" start="00:04:51.720" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And then the conversation started.""" start="00:04:56.000" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""So "yeah, I tried Org Roam version one.""" start="00:04:58.040" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""I use my own thing.""" start="00:05:00.200" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""But what is it...""" start="00:05:01.200" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""I'm curious about version two.""" start="00:05:02.880" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Did you use it?""" start="00:05:04.240" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Do you know about Luhmann?"""" start="00:05:05.840" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""That is the inspiration of Org Roam""" start="00:05:07.080" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""and the backlinking and stuff.""" start="00:05:09.862" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And then I started the conversation about that.""" start="00:05:13.240" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And we discussed about functional programming.""" start="00:05:15.480" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""We discussed a bit about philosophy and went on.""" start="00:05:18.360" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""And then this conversation is not currently going.""" start="00:05:23.280" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""So we arrived to a point in which it sort of died out.""" start="00:05:29.160" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""But if I want or if they want, they can ping me back.""" start="00:05:32.760" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""I can ping them.""" start="00:05:36.680" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""So it's sort of a reference of this person exists""" start="00:05:37.440" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""and is an interesting person to chat with when I have something""" start="00:05:40.800" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""to say to them.""" start="00:05:44.440" video="mainVideo-buddy" id="subtitle"]] +[[!template new="1" text="""And what if you want to be a buddy?""" start="00:05:48.360" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Well, if you want to be a buddy, it's easy as well.""" start="00:05:50.480" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""So basically, just open a PR on the Emacs buddy repository.""" start="00:05:54.280" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""That is something that I am maintaining at the moment.""" start="00:06:02.280" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Or simply send me the information.""" start="00:06:05.280" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Somebody just sent me an email with the information.""" start="00:06:07.760" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""I have created the commit to make it public available.""" start="00:06:10.000" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""The information is just your name, a summary,""" start="00:06:14.720" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""what kind of user you are so that you can attract""" start="00:06:18.560" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""the right people to you, and a link to your material""" start="00:06:21.560" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""so that if they are curious about your summary or about you,""" start="00:06:28.040" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""they can actually go and check and even contact you directly.""" start="00:06:31.960" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""If they contact via me, I will know your email anyway""" start="00:06:35.560" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""from the PR you open.""" start="00:06:40.560" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""So that is all.""" start="00:06:44.320" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""There are ideas to maybe... if... this is basically""" start="00:06:45.760" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""an advertisement for this initiative""" start="00:06:53.040" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""so that we can get people that want to be helped""" start="00:06:54.760" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""or people that want to help.""" start="00:06:57.640" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""It's building up organically, so no rush""" start="00:07:01.200" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""to make this thing grow, escalate enormously.""" start="00:07:03.600" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""But for example, there are ideas to join this with the meetup""" start="00:07:08.640" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""talk that is being happening in the conference.""" start="00:07:12.480" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""So for example, if you find out something very interesting,""" start="00:07:15.720" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""you can bring the discussion that you have with your buddy""" start="00:07:19.520" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""into a meetup so that the group with which you speak is bigger.""" start="00:07:22.200" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""There are ideas like that.""" start="00:07:27.560" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""But first of all, just get in touch if you want to find""" start="00:07:28.920" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""like-minded people that want to help you with your Emacs""" start="00:07:33.120" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""journey or if you want to help others.""" start="00:07:36.600" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Thank you very much.""" start="00:07:38.920" video="mainVideo-buddy" id="subtitle"]] +[[!template text="""Enjoy the rest of the talks and chat to you soon.""" start="00:07:39.800" video="mainVideo-buddy" id="subtitle"]] + +Captioner: andrea Questions or comments? Please e-mail [andrea-dev@hotmail.com](mailto:andrea-dev@hotmail.com?subject=Comment%20for%20EmacsConf%202022%20buddy%3A%20The%20Emacs%20Buddy%20initiative) diff --git a/2022/info/buddy-before.md b/2022/info/buddy-before.md index 51c114f8..a5df7197 100644 --- a/2022/info/buddy-before.md +++ b/2022/info/buddy-before.md @@ -3,15 +3,15 @@ In this talk, Andrea shares how to connect with an Emacs Buddy for one-to-one pe The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="buddy"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect stroke-width="3" x="227" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 3:50- 3:55 Short hyperlinks to Python docs</title> <rect x="643" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(648,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect stroke-width="3" x="227" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] Format: 8-min talk followed by IRC Q&A (<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-org,emacsconf-accessible,emacsconf-dev,emacsconf-gen">#emacsconf-gen</a>) Etherpad: <https://pad.emacsconf.org/2022-buddy> Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A starting (not yet open for joining) -<div>Times in different timezones:</div><div class="times" start="2022-12-03T16:25:00Z" end="2022-12-03T16:35:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~11:25 AM - 11:35 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~10:25 AM - 10:35 AM CST (US/Central)<br />Saturday, Dec 3 2022, ~9:25 AM - 9:35 AM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~8:25 AM - 8:35 AM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~4:25 PM - 4:35 PM UTC <br />Saturday, Dec 3 2022, ~5:25 PM - 5:35 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~6:25 PM - 6:35 PM EET (Europe/Athens)<br />Saturday, Dec 3 2022, ~9:55 PM - 10:05 PM IST (Asia/Kolkata)<br />Sunday, Dec 4 2022, ~12:25 AM - 12:35 AM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~1:25 AM - 1:35 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/gen/">Find out how to watch and participate</a></div> +Status: Q&A finished, IRC and pad will be archived on this page + [[!template id="vid" vidid="buddy-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-buddy--the-emacs-buddy-initiative--andrea--main.webm" poster="https://media.emacsconf.org/2022/emacsconf-2022-buddy--the-emacs-buddy-initiative--andrea--main.png" captions="""<track label="English" kind="captions" srclang="en" src="/2022/captions/emacsconf-2022-buddy--the-emacs-buddy-initiative--andrea--main.vtt" default />""" size="16M" duration="7:49" other_resources="""[Download --main.webm (16MB)](https://media.emacsconf.org/2022/emacsconf-2022-buddy--the-emacs-buddy-initiative--andrea--main.webm) diff --git a/2022/info/buttons-after.md b/2022/info/buttons-after.md index 3e417e70..1b3e6f4f 100644 --- a/2022/info/buttons-after.md +++ b/2022/info/buttons-after.md @@ -4,231 +4,233 @@ <a name="buttons-mainVideo-transcript"></a> # Transcript -[[!template new="1" text="Hi everyone! I'm Mats Liddell." start="00:00:00.000" video="mainVideo-buttons" id="subtitle"]] -[[!template text="In this talk, I will show" start="00:00:06.280" video="mainVideo-buttons" id="subtitle"]] -[[!template text="how you can link to personal data" start="00:00:07.320" video="mainVideo-buttons" id="subtitle"]] -[[!template text="using Hyperbole's support for implicit button types." start="00:00:09.040" video="mainVideo-buttons" id="subtitle"]] -[[!template text="Before starting, a few words about me." start="00:00:13.960" video="mainVideo-buttons" id="subtitle"]] -[[!template text="I work as a software engineer," start="00:00:16.040" video="mainVideo-buttons" id="subtitle"]] -[[!template text="and in my spare time" start="00:00:18.000" video="mainVideo-buttons" id="subtitle"]] -[[!template text="I'm co-maintaining the Hyperbole package" start="00:00:19.200" video="mainVideo-buttons" id="subtitle"]] -[[!template text="together with the package author Bob Weiner." start="00:00:21.280" video="mainVideo-buttons" id="subtitle"]] -[[!template text="Hyperbole dates back to 1993," start="00:00:24.360" video="mainVideo-buttons" id="subtitle"]] -[[!template text="and have had some inactive years in the past," start="00:00:27.240" video="mainVideo-buttons" id="subtitle"]] -[[!template text="but work is now active again." start="00:00:29.680" video="mainVideo-buttons" id="subtitle"]] -[[!template text="The package is available" start="00:00:31.680" video="mainVideo-buttons" id="subtitle"]] -[[!template text="through the GNU ELPA package archive." start="00:00:33.080" video="mainVideo-buttons" id="subtitle"]] -[[!template text="The talk will focus on" start="00:00:36.160" video="mainVideo-buttons" id="subtitle"]] -[[!template text="creation of implicit button types." start="00:00:37.960" video="mainVideo-buttons" id="subtitle"]] -[[!template text="For more info on Hyperbole," start="00:00:39.600" video="mainVideo-buttons" id="subtitle"]] -[[!template text="listen to other presentations" start="00:00:41.480" video="mainVideo-buttons" id="subtitle"]] -[[!template text="and check out the package documentation." start="00:00:43.120" video="mainVideo-buttons" id="subtitle"]] -[[!template text="What I want you to take with you from this talk is" start="00:00:46.360" video="mainVideo-buttons" id="subtitle"]] -[[!template text="that the implicit button types" start="00:00:50.000" video="mainVideo-buttons" id="subtitle"]] -[[!template text="can make patterns in your files into buttons;" start="00:00:51.640" video="mainVideo-buttons" id="subtitle"]] -[[!template text="and that new implicit button types" start="00:00:54.440" video="mainVideo-buttons" id="subtitle"]] -[[!template text="can quickly be created by using" start="00:00:56.600" video="mainVideo-buttons" id="subtitle"]] -[[!template text="the `defil' and the `defal' macros." start="00:00:58.480" video="mainVideo-buttons" id="subtitle"]] -[[!template new="1" text="So what is an implicit button type?" start="00:01:01.760" video="mainVideo-buttons" id="subtitle"]] -[[!template text="I think of it as a text pattern" start="00:01:05.160" video="mainVideo-buttons" id="subtitle"]] -[[!template text="that has some extended meaning." start="00:01:06.800" video="mainVideo-buttons" id="subtitle"]] -[[!template text="When you see the pattern in the text," start="00:01:08.920" video="mainVideo-buttons" id="subtitle"]] -[[!template text="you can think of it as a button type." start="00:01:10.760" video="mainVideo-buttons" id="subtitle"]] -[[!template text="When you press the button," start="00:01:12.800" video="mainVideo-buttons" id="subtitle"]] -[[!template text="something related to that meaning happens." start="00:01:13.880" video="mainVideo-buttons" id="subtitle"]] -[[!template text="It can be jumping to some place," start="00:01:16.880" video="mainVideo-buttons" id="subtitle"]] -[[!template text="opening an external tool, doing some computation." start="00:01:19.000" video="mainVideo-buttons" id="subtitle"]] -[[!template text="So there can be some action" start="00:01:22.440" video="mainVideo-buttons" id="subtitle"]] -[[!template text="associated with the pattern." start="00:01:24.160" video="mainVideo-buttons" id="subtitle"]] -[[!template new="1" text="To make it clear, let's look at some examples." start="00:01:29.920" video="mainVideo-buttons" id="subtitle"]] -[[!template text="Let's start with something that is maybe so obvious" start="00:01:33.320" video="mainVideo-buttons" id="subtitle"]] -[[!template text="that you don't even think of it as a pattern: a file name." start="00:01:36.080" video="mainVideo-buttons" id="subtitle"]] -[[!template text="When you see such a string in text," start="00:01:39.600" video="mainVideo-buttons" id="subtitle"]] -[[!template text="you will naturally associate it with a file on disk," start="00:01:41.360" video="mainVideo-buttons" id="subtitle"]] -[[!template text="and if you would click on it," start="00:01:45.360" video="mainVideo-buttons" id="subtitle"]] -[[!template text="you would probably expect that file to open." start="00:01:46.720" video="mainVideo-buttons" id="subtitle"]] -[[!template text="In the first sentence on the slide," start="00:01:52.680" video="mainVideo-buttons" id="subtitle"]] -[[!template text="you might recognize the file name" start="00:01:55.120" video="mainVideo-buttons" id="subtitle"]] -[[!template text="for the bash initialization file, ~/.bashrc." start="00:01:56.840" video="mainVideo-buttons" id="subtitle"]] -[[!template text="Hyperbole comes with built-in support" start="00:02:01.760" video="mainVideo-buttons" id="subtitle"]] -[[!template text="for recognizing files and directory path names" start="00:02:03.840" video="mainVideo-buttons" id="subtitle"]] -[[!template text="as implicit button types in text." start="00:02:06.520" video="mainVideo-buttons" id="subtitle"]] -[[!template text="For Hyperbole to take action on the button type," start="00:02:08.680" video="mainVideo-buttons" id="subtitle"]] -[[!template text="you move the cursor within the button" start="00:02:11.760" video="mainVideo-buttons" id="subtitle"]] -[[!template text="and press M-RET or use a mouse click." start="00:02:13.440" video="mainVideo-buttons" id="subtitle"]] -[[!template text="So let's try that." start="00:02:16.320" video="mainVideo-buttons" id="subtitle"]] -[[!template text="Similar for the path, /usr/local in the next sentence." start="00:02:22.360" video="mainVideo-buttons" id="subtitle"]] -[[!template text="That will open the corresponding" start="00:02:27.720" video="mainVideo-buttons" id="subtitle"]] -[[!template text="directory using dired-mode." start="00:02:29.520" video="mainVideo-buttons" id="subtitle"]] -[[!template new="1" text="Other examples of built-in implicit button types" start="00:02:37.080" video="mainVideo-buttons" id="subtitle"]] -[[!template text="that Hyperbole recognizes are email addresses," start="00:02:39.760" video="mainVideo-buttons" id="subtitle"]] -[[!template text="web addresses, requests for comment documents" start="00:02:43.720" video="mainVideo-buttons" id="subtitle"]] -[[!template text="in the form of RFC followed by a number," start="00:02:47.320" video="mainVideo-buttons" id="subtitle"]] -[[!template text="GNU debbugs issues, plus many more." start="00:02:50.120" video="mainVideo-buttons" id="subtitle"]] -[[!template text="These are some examples" start="00:02:53.040" video="mainVideo-buttons" id="subtitle"]] -[[!template text="of implicit button types with built-in support." start="00:02:55.360" video="mainVideo-buttons" id="subtitle"]] -[[!template text="I list them here to give you an idea" start="00:02:58.080" video="mainVideo-buttons" id="subtitle"]] -[[!template text="how the text pattern in itself is enough" start="00:02:59.920" video="mainVideo-buttons" id="subtitle"]] -[[!template text="for the system to recognize it" start="00:03:02.480" video="mainVideo-buttons" id="subtitle"]] -[[!template text="as something actionable." start="00:03:03.960" video="mainVideo-buttons" id="subtitle"]] -[[!template new="1" text="So as shown, Hyperbole has built-in support" start="00:03:10.120" video="mainVideo-buttons" id="subtitle"]] -[[!template text="for implicit buttons." start="00:03:12.480" video="mainVideo-buttons" id="subtitle"]] -[[!template text="There's only one problem here." start="00:03:14.040" video="mainVideo-buttons" id="subtitle"]] -[[!template text="The behavior is predefined." start="00:03:16.120" video="mainVideo-buttons" id="subtitle"]] -[[!template text="There is of course a trade off." start="00:03:17.920" video="mainVideo-buttons" id="subtitle"]] -[[!template text="It is convenient to get" start="00:03:20.240" video="mainVideo-buttons" id="subtitle"]] -[[!template text="many button types out of the box" start="00:03:21.560" video="mainVideo-buttons" id="subtitle"]] -[[!template text="with likely good standard behavior" start="00:03:23.480" video="mainVideo-buttons" id="subtitle"]] -[[!template text="and that works in many places." start="00:03:25.520" video="mainVideo-buttons" id="subtitle"]] -[[!template text="But what if you would want to create" start="00:03:27.680" video="mainVideo-buttons" id="subtitle"]] -[[!template text="your own completely new mapping," start="00:03:29.360" video="mainVideo-buttons" id="subtitle"]] -[[!template text="possibly to your own data?" start="00:03:31.160" video="mainVideo-buttons" id="subtitle"]] -[[!template text="It is here that Hyperbole's support for creating" start="00:03:32.880" video="mainVideo-buttons" id="subtitle"]] -[[!template text="new implicit button types comes in." start="00:03:38.120" video="mainVideo-buttons" id="subtitle"]] -[[!template text="For the full pattern matching button type," start="00:03:41.280" video="mainVideo-buttons" id="subtitle"]] -[[!template text="like for the filename and examples we just looked at," start="00:03:43.360" video="mainVideo-buttons" id="subtitle"]] -[[!template text="you need to define the implicit button" start="00:03:46.720" video="mainVideo-buttons" id="subtitle"]] -[[!template text="using the macro, `defib'." start="00:03:48.755" video="mainVideo-buttons" id="subtitle"]] -[[!template text="The downside of that is" start="00:03:50.920" video="mainVideo-buttons" id="subtitle"]] -[[!template text="you need to code at the elisp level." start="00:03:53.280" video="mainVideo-buttons" id="subtitle"]] -[[!template text="However, if you are creating a new pattern" start="00:03:54.920" video="mainVideo-buttons" id="subtitle"]] -[[!template text="that has well-defined delimiters," start="00:03:57.240" video="mainVideo-buttons" id="subtitle"]] -[[!template text="there is support for that in an easier way." start="00:03:59.120" video="mainVideo-buttons" id="subtitle"]] -[[!template text="These support functions, or rather macros," start="00:04:01.360" video="mainVideo-buttons" id="subtitle"]] -[[!template text="are `defil' and `defal'." start="00:04:03.800" video="mainVideo-buttons" id="subtitle"]] -[[!template text="We will look at those macros soon," start="00:04:06.240" video="mainVideo-buttons" id="subtitle"]] -[[!template text="but first, my definition of personal data." start="00:04:08.440" video="mainVideo-buttons" id="subtitle"]] -[[!template new="1" text="I think of personal data as something" start="00:04:13.400" video="mainVideo-buttons" id="subtitle"]] -[[!template text="that you would like to link to," start="00:04:18.200" video="mainVideo-buttons" id="subtitle"]] -[[!template text="but it's not necessarily in a form" start="00:04:19.680" video="mainVideo-buttons" id="subtitle"]] -[[!template text="supported by any known tool." start="00:04:21.440" video="mainVideo-buttons" id="subtitle"]] -[[!template text="It might be stored on a web server, local storage," start="00:04:23.360" video="mainVideo-buttons" id="subtitle"]] -[[!template text="or could even be some computation" start="00:04:26.920" video="mainVideo-buttons" id="subtitle"]] -[[!template text="rather than a link." start="00:04:28.680" video="mainVideo-buttons" id="subtitle"]] -[[!template text="What all these cases have in common is that" start="00:04:29.400" video="mainVideo-buttons" id="subtitle"]] -[[!template text="you want to be able to reference it" start="00:04:32.200" video="mainVideo-buttons" id="subtitle"]] -[[!template text="in a short, and for you, descriptive way." start="00:04:34.240" video="mainVideo-buttons" id="subtitle"]] -[[!template text="So when you write text, you can use" start="00:04:36.640" video="mainVideo-buttons" id="subtitle"]] -[[!template text="a new implicit type to create the connection." start="00:04:38.960" video="mainVideo-buttons" id="subtitle"]] -[[!template new="1" text="This might be a bit abstract," start="00:04:44.480" video="mainVideo-buttons" id="subtitle"]] -[[!template text="so let's look at an example." start="00:04:46.600" video="mainVideo-buttons" id="subtitle"]] -[[!template text="Suppose you have a flat file structure" start="00:04:48.080" video="mainVideo-buttons" id="subtitle"]] -[[!template text="with some notes in each file." start="00:04:51.000" video="mainVideo-buttons" id="subtitle"]] -[[!template text="It can look like this." start="00:04:52.760" video="mainVideo-buttons" id="subtitle"]] -[[!template text="In the data folder, we have two files" start="00:04:54.520" video="mainVideo-buttons" id="subtitle"]] -[[!template text="that represents the notes we have taken." start="00:04:57.400" video="mainVideo-buttons" id="subtitle"]] -[[!template text="We now want to be able to link to these notes" start="00:05:00.200" video="mainVideo-buttons" id="subtitle"]] -[[!template text="from outside of the data folder." start="00:05:02.840" video="mainVideo-buttons" id="subtitle"]] -[[!template text="Let's make an implicit button type" start="00:05:07.120" video="mainVideo-buttons" id="subtitle"]] -[[!template text="that opens a file in this structure." start="00:05:08.960" video="mainVideo-buttons" id="subtitle"]] -[[!template text="To make the pattern stand out in text," start="00:05:10.920" video="mainVideo-buttons" id="subtitle"]] -[[!template text="we use double braces as start and stop delimiters." start="00:05:13.520" video="mainVideo-buttons" id="subtitle"]] -[[!template text="An implicit button instance" start="00:05:16.640" video="mainVideo-buttons" id="subtitle"]] -[[!template text="would then look like this." start="00:05:20.080" video="mainVideo-buttons" id="subtitle"]] -[[!template text="We can create that using the `defil' macro like this." start="00:05:22.760" video="mainVideo-buttons" id="subtitle"]] -[[!template text="This invocation of the field" start="00:05:27.680" video="mainVideo-buttons" id="subtitle"]] -[[!template text="creates a button type "demo-link-to-file"" start="00:05:31.840" video="mainVideo-buttons" id="subtitle"]] -[[!template text="with the start delimiter of "{{"" start="00:05:34.480" video="mainVideo-buttons" id="subtitle"]] -[[!template text="and then delimiters of "}}"," start="00:05:37.280" video="mainVideo-buttons" id="subtitle"]] -[[!template text="the regular expression ".*" pattern" start="00:05:40.560" video="mainVideo-buttons" id="subtitle"]] -[[!template text="to match everything between the delimiters," start="00:05:43.320" video="mainVideo-buttons" id="subtitle"]] -[[!template text="and finally, the action defined by the link expression." start="00:05:45.640" video="mainVideo-buttons" id="subtitle"]] -[[!template text="Pattern substitution is performed" start="00:05:48.800" video="mainVideo-buttons" id="subtitle"]] -[[!template text="on the link expression before evaluation" start="00:05:52.160" video="mainVideo-buttons" id="subtitle"]] -[[!template text="so that the text that is in between the delimiters" start="00:05:54.440" video="mainVideo-buttons" id="subtitle"]] -[[!template text="is inserted where the "\\&" is in the link expression." start="00:05:57.920" video="mainVideo-buttons" id="subtitle"]] -[[!template text="So all in all, implicit type instance will result in" start="00:06:02.360" video="mainVideo-buttons" id="subtitle"]] -[[!template text="the link expression of "~/data/FileA"," start="00:06:07.560" video="mainVideo-buttons" id="subtitle"]] -[[!template text="which we recognize as a file path." start="00:06:11.760" video="mainVideo-buttons" id="subtitle"]] -[[!template text="With a single-line expression," start="00:06:14.520" video="mainVideo-buttons" id="subtitle"]] -[[!template text="we have created our own hyperbutton syntax" start="00:06:18.040" video="mainVideo-buttons" id="subtitle"]] -[[!template text="that we can use in any Emacs buffer" start="00:06:21.040" video="mainVideo-buttons" id="subtitle"]] -[[!template text="to link to this custom set of data." start="00:06:23.080" video="mainVideo-buttons" id="subtitle"]] -[[!template text="So let's evaluate the defil and use it." start="00:06:25.560" video="mainVideo-buttons" id="subtitle"]] -[[!template text="I have prepared the files so that they already" start="00:06:30.960" video="mainVideo-buttons" id="subtitle"]] -[[!template text="contain some text and implicit links." start="00:06:33.760" video="mainVideo-buttons" id="subtitle"]] -[[!template text="So from the presentation, we can go to FileA," start="00:06:36.400" video="mainVideo-buttons" id="subtitle"]] -[[!template text="and from there to fileB." start="00:06:43.760" video="mainVideo-buttons" id="subtitle"]] -[[!template text="Since the Hyperbole path expression" start="00:06:48.720" video="mainVideo-buttons" id="subtitle"]] -[[!template text="supports outline structures, we can," start="00:06:51.040" video="mainVideo-buttons" id="subtitle"]] -[[!template text="as an extra bonus, reference directly" start="00:06:53.640" video="mainVideo-buttons" id="subtitle"]] -[[!template text="the headers in the files," start="00:06:55.960" video="mainVideo-buttons" id="subtitle"]] -[[!template text="so we can, for example, link directly" start="00:06:57.560" video="mainVideo-buttons" id="subtitle"]] -[[!template text="to "More Notes" in FileB." start="00:07:00.160" video="mainVideo-buttons" id="subtitle"]] -[[!template text="We have now created a simple info system." start="00:07:02.600" video="mainVideo-buttons" id="subtitle"]] -[[!template new="1" text="Looking deeper at the link expression," start="00:07:10.720" video="mainVideo-buttons" id="subtitle"]] -[[!template text="it can be of four different types:" start="00:07:16.440" video="mainVideo-buttons" id="subtitle"]] -[[!template text="A file path expression," start="00:07:19.840" video="mainVideo-buttons" id="subtitle"]] -[[!template text="as we have already looked at;" start="00:07:22.040" video="mainVideo-buttons" id="subtitle"]] -[[!template text="a brace-delimited key series," start="00:07:23.520" video="mainVideo-buttons" id="subtitle"]] -[[!template text="that is, a series of command keys" start="00:07:25.960" video="mainVideo-buttons" id="subtitle"]] -[[!template text="for performing some action," start="00:07:27.960" video="mainVideo-buttons" id="subtitle"]] -[[!template text="much like a keyboard macro;" start="00:07:29.480" video="mainVideo-buttons" id="subtitle"]] -[[!template text="An URL; or a function that takes one argument," start="00:07:30.960" video="mainVideo-buttons" id="subtitle"]] -[[!template text="which will be given the button text as input." start="00:07:36.240" video="mainVideo-buttons" id="subtitle"]] -[[!template text="The URL link expression allows you" start="00:07:38.640" video="mainVideo-buttons" id="subtitle"]] -[[!template text="to link to web pages." start="00:07:42.880" video="mainVideo-buttons" id="subtitle"]] -[[!template text="So if the data you want to link to" start="00:07:44.480" video="mainVideo-buttons" id="subtitle"]] -[[!template text="is accessible through the Web" start="00:07:46.560" video="mainVideo-buttons" id="subtitle"]] -[[!template text="and the URL can be constructed" start="00:07:48.640" video="mainVideo-buttons" id="subtitle"]] -[[!template text="from the button text in a meaningful way," start="00:07:50.880" video="mainVideo-buttons" id="subtitle"]] -[[!template text="it is possible to do that." start="00:07:53.000" video="mainVideo-buttons" id="subtitle"]] -[[!template new="1" text="Let's create the button type" start="00:07:54.520" video="mainVideo-buttons" id="subtitle"]] -[[!template text="that links to GNU software." start="00:07:56.160" video="mainVideo-buttons" id="subtitle"]] -[[!template text="The URL to the GNU software catalog" start="00:07:57.720" video="mainVideo-buttons" id="subtitle"]] -[[!template text="is www.gnu.org/software," start="00:08:01.089" video="mainVideo-buttons" id="subtitle"]] -[[!template text="and with what we know about the field," start="00:08:04.680" video="mainVideo-buttons" id="subtitle"]] -[[!template text="it is easy to create the button type for that." start="00:08:07.440" video="mainVideo-buttons" id="subtitle"]] -[[!template text="It can look like this." start="00:08:09.640" video="mainVideo-buttons" id="subtitle"]] -[[!template text="And here are two possible buttons" start="00:08:11.000" video="mainVideo-buttons" id="subtitle"]] -[[!template text="linking to Emacs and Hyperbole." start="00:08:16.200" video="mainVideo-buttons" id="subtitle"]] -[[!template text="So let's again evaluate the defil and use it." start="00:08:19.320" video="mainVideo-buttons" id="subtitle"]] -[[!template text="Please note that not all GNU software" start="00:08:24.200" video="mainVideo-buttons" id="subtitle"]] -[[!template text="is under that URL," start="00:08:28.120" video="mainVideo-buttons" id="subtitle"]] -[[!template text="so this simple definition will not work" start="00:08:29.000" video="mainVideo-buttons" id="subtitle"]] -[[!template text="to link to everything." start="00:08:31.000" video="mainVideo-buttons" id="subtitle"]] -[[!template new="1" text="To highlight the fact that the button action" start="00:08:32.200" video="mainVideo-buttons" id="subtitle"]] -[[!template text="does not have to be a link," start="00:08:37.280" video="mainVideo-buttons" id="subtitle"]] -[[!template text="but can be any action," start="00:08:39.080" video="mainVideo-buttons" id="subtitle"]] -[[!template text="let's look at a math example." start="00:08:40.600" video="mainVideo-buttons" id="subtitle"]] -[[!template text="Here is the button type that does some math" start="00:08:42.200" video="mainVideo-buttons" id="subtitle"]] -[[!template text="and writes the result in the message area." start="00:08:44.800" video="mainVideo-buttons" id="subtitle"]] -[[!template text="Let's evaluate and use it." start="00:08:47.480" video="mainVideo-buttons" id="subtitle"]] -[[!template new="1" text="Before ending, I would like to mention" start="00:08:57.160" video="mainVideo-buttons" id="subtitle"]] -[[!template text="the defal macro." start="00:08:59.760" video="mainVideo-buttons" id="subtitle"]] -[[!template text="It is similar to the defil macro," start="00:09:00.760" video="mainVideo-buttons" id="subtitle"]] -[[!template text="but simpler, since it uses a form" start="00:09:02.920" video="mainVideo-buttons" id="subtitle"]] -[[!template text="of the implicit button type with no delimiters." start="00:09:04.880" video="mainVideo-buttons" id="subtitle"]] -[[!template text="It is simply <TYPE LINK-EXPR>." start="00:09:07.880" video="mainVideo-buttons" id="subtitle"]] -[[!template text="So the implicit button type contains the link type" start="00:09:14.800" video="mainVideo-buttons" id="subtitle"]] -[[!template text="in clear text." start="00:09:17.920" video="mainVideo-buttons" id="subtitle"]] -[[!template text="Our recent FSF software button" start="00:09:18.960" video="mainVideo-buttons" id="subtitle"]] -[[!template text="would be created like this." start="00:09:23.120" video="mainVideo-buttons" id="subtitle"]] -[[!template text="And it would be instantiated in text like this." start="00:09:24.855" video="mainVideo-buttons" id="subtitle"]] -[[!template new="1" text="I have shown how you," start="00:09:29.760" video="mainVideo-buttons" id="subtitle"]] -[[!template text="with the help of the defil macro in Hyperbole," start="00:09:34.960" video="mainVideo-buttons" id="subtitle"]] -[[!template text="quickly can create implicit buttons." start="00:09:37.840" video="mainVideo-buttons" id="subtitle"]] -[[!template text="With those buttons, you can link" start="00:09:40.240" video="mainVideo-buttons" id="subtitle"]] -[[!template text="to your personal information" start="00:09:41.480" video="mainVideo-buttons" id="subtitle"]] -[[!template text="in the form it may have." start="00:09:43.160" video="mainVideo-buttons" id="subtitle"]] -[[!template text="By the nature of the implicit buttons," start="00:09:44.160" video="mainVideo-buttons" id="subtitle"]] -[[!template text="those can be used from any file in Emacs." start="00:09:47.200" video="mainVideo-buttons" id="subtitle"]] -[[!template text="The button types can be" start="00:09:49.880" video="mainVideo-buttons" id="subtitle"]] -[[!template text="created to be used long term," start="00:09:52.640" video="mainVideo-buttons" id="subtitle"]] -[[!template text="but even short term use within the session is possible," start="00:09:54.640" video="mainVideo-buttons" id="subtitle"]] -[[!template text="since the creation is simple and quick." start="00:09:57.680" video="mainVideo-buttons" id="subtitle"]] -[[!template text="Inspired by this, I hope you will find ways" start="00:09:59.880" video="mainVideo-buttons" id="subtitle"]] -[[!template text="to create implicit buttons" start="00:10:03.400" video="mainVideo-buttons" id="subtitle"]] -[[!template text="that will support you getting to your information." start="00:10:04.760" video="mainVideo-buttons" id="subtitle"]] -[[!template text="For the simplest cases," start="00:10:07.360" video="mainVideo-buttons" id="subtitle"]] -[[!template text="the field and the file macros might be enough." start="00:10:09.240" video="mainVideo-buttons" id="subtitle"]] -[[!template text="For more complicated cases," start="00:10:11.400" video="mainVideo-buttons" id="subtitle"]] -[[!template text="using a tailor-made function can be an option." start="00:10:13.360" video="mainVideo-buttons" id="subtitle"]] -[[!template text="If you know Elisp, use the defib macro" start="00:10:15.760" video="mainVideo-buttons" id="subtitle"]] -[[!template text="which gives you full control over the button type." start="00:10:19.480" video="mainVideo-buttons" id="subtitle"]] -[[!template text="Thank you." start="00:10:22.240" video="mainVideo-buttons" id="subtitle"]] +[[!template new="1" text="""Hi everyone! I'm Mats Liddell.""" start="00:00:00.000" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""In this talk, I will show""" start="00:00:06.280" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""how you can link to personal data""" start="00:00:07.320" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""using Hyperbole's support for implicit button types.""" start="00:00:09.040" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""Before starting, a few words about me.""" start="00:00:13.960" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""I work as a software engineer,""" start="00:00:16.040" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""and in my spare time""" start="00:00:18.000" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""I'm co-maintaining the Hyperbole package""" start="00:00:19.200" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""together with the package author Bob Weiner.""" start="00:00:21.280" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""Hyperbole dates back to 1993,""" start="00:00:24.360" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""and have had some inactive years in the past,""" start="00:00:27.240" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""but work is now active again.""" start="00:00:29.680" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""The package is available""" start="00:00:31.680" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""through the GNU ELPA package archive.""" start="00:00:33.080" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""The talk will focus on""" start="00:00:36.160" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""creation of implicit button types.""" start="00:00:37.960" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""For more info on Hyperbole,""" start="00:00:39.600" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""listen to other presentations""" start="00:00:41.480" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""and check out the package documentation.""" start="00:00:43.120" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""What I want you to take with you from this talk is""" start="00:00:46.360" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""that the implicit button types""" start="00:00:50.000" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""can make patterns in your files into buttons;""" start="00:00:51.640" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""and that new implicit button types""" start="00:00:54.440" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""can quickly be created by using""" start="00:00:56.600" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""the `defil' and the `defal' macros.""" start="00:00:58.480" video="mainVideo-buttons" id="subtitle"]] +[[!template new="1" text="""So what is an implicit button type?""" start="00:01:01.760" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""I think of it as a text pattern""" start="00:01:05.160" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""that has some extended meaning.""" start="00:01:06.800" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""When you see the pattern in the text,""" start="00:01:08.920" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""you can think of it as a button type.""" start="00:01:10.760" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""When you press the button,""" start="00:01:12.800" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""something related to that meaning happens.""" start="00:01:13.880" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""It can be jumping to some place,""" start="00:01:16.880" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""opening an external tool, doing some computation.""" start="00:01:19.000" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""So there can be some action""" start="00:01:22.440" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""associated with the pattern.""" start="00:01:24.160" video="mainVideo-buttons" id="subtitle"]] +[[!template new="1" text="""To make it clear, let's look at some examples.""" start="00:01:29.920" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""Let's start with something that is maybe so obvious""" start="00:01:33.320" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""that you don't even think of it as a pattern: a file name.""" start="00:01:36.080" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""When you see such a string in text,""" start="00:01:39.600" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""you will naturally associate it with a file on disk,""" start="00:01:41.360" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""and if you would click on it,""" start="00:01:45.360" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""you would probably expect that file to open.""" start="00:01:46.720" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""In the first sentence on the slide,""" start="00:01:52.680" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""you might recognize the file name""" start="00:01:55.120" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""for the bash initialization file, ~/.bashrc.""" start="00:01:56.840" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""Hyperbole comes with built-in support""" start="00:02:01.760" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""for recognizing files and directory path names""" start="00:02:03.840" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""as implicit button types in text.""" start="00:02:06.520" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""For Hyperbole to take action on the button type,""" start="00:02:08.680" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""you move the cursor within the button""" start="00:02:11.760" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""and press M-RET or use a mouse click.""" start="00:02:13.440" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""So let's try that.""" start="00:02:16.320" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""Similar for the path, /usr/local in the next sentence.""" start="00:02:22.360" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""That will open the corresponding""" start="00:02:27.720" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""directory using dired-mode.""" start="00:02:29.520" video="mainVideo-buttons" id="subtitle"]] +[[!template new="1" text="""Other examples of built-in implicit button types""" start="00:02:37.080" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""that Hyperbole recognizes are email addresses,""" start="00:02:39.760" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""web addresses, requests for comment documents""" start="00:02:43.720" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""in the form of RFC followed by a number,""" start="00:02:47.320" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""GNU debbugs issues, plus many more.""" start="00:02:50.120" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""These are some examples""" start="00:02:53.040" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""of implicit button types with built-in support.""" start="00:02:55.360" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""I list them here to give you an idea""" start="00:02:58.080" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""how the text pattern in itself is enough""" start="00:02:59.920" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""for the system to recognize it""" start="00:03:02.480" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""as something actionable.""" start="00:03:03.960" video="mainVideo-buttons" id="subtitle"]] +[[!template new="1" text="""So as shown, Hyperbole has built-in support""" start="00:03:10.120" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""for implicit buttons.""" start="00:03:12.480" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""There's only one problem here.""" start="00:03:14.040" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""The behavior is predefined.""" start="00:03:16.120" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""There is of course a trade off.""" start="00:03:17.920" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""It is convenient to get""" start="00:03:20.240" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""many button types out of the box""" start="00:03:21.560" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""with likely good standard behavior""" start="00:03:23.480" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""and that works in many places.""" start="00:03:25.520" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""But what if you would want to create""" start="00:03:27.680" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""your own completely new mapping,""" start="00:03:29.360" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""possibly to your own data?""" start="00:03:31.160" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""It is here that Hyperbole's support for creating""" start="00:03:32.880" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""new implicit button types comes in.""" start="00:03:38.120" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""For the full pattern matching button type,""" start="00:03:41.280" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""like for the filename and examples we just looked at,""" start="00:03:43.360" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""you need to define the implicit button""" start="00:03:46.720" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""using the macro, `defib'.""" start="00:03:48.755" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""The downside of that is""" start="00:03:50.920" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""you need to code at the elisp level.""" start="00:03:53.280" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""However, if you are creating a new pattern""" start="00:03:54.920" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""that has well-defined delimiters,""" start="00:03:57.240" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""there is support for that in an easier way.""" start="00:03:59.120" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""These support functions, or rather macros,""" start="00:04:01.360" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""are `defil' and `defal'.""" start="00:04:03.800" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""We will look at those macros soon,""" start="00:04:06.240" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""but first, my definition of personal data.""" start="00:04:08.440" video="mainVideo-buttons" id="subtitle"]] +[[!template new="1" text="""I think of personal data as something""" start="00:04:13.400" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""that you would like to link to,""" start="00:04:18.200" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""but it's not necessarily in a form""" start="00:04:19.680" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""supported by any known tool.""" start="00:04:21.440" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""It might be stored on a web server, local storage,""" start="00:04:23.360" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""or could even be some computation""" start="00:04:26.920" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""rather than a link.""" start="00:04:28.680" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""What all these cases have in common is that""" start="00:04:29.400" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""you want to be able to reference it""" start="00:04:32.200" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""in a short, and for you, descriptive way.""" start="00:04:34.240" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""So when you write text, you can use""" start="00:04:36.640" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""a new implicit type to create the connection.""" start="00:04:38.960" video="mainVideo-buttons" id="subtitle"]] +[[!template new="1" text="""This might be a bit abstract,""" start="00:04:44.480" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""so let's look at an example.""" start="00:04:46.600" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""Suppose you have a flat file structure""" start="00:04:48.080" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""with some notes in each file.""" start="00:04:51.000" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""It can look like this.""" start="00:04:52.760" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""In the data folder, we have two files""" start="00:04:54.520" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""that represents the notes we have taken.""" start="00:04:57.400" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""We now want to be able to link to these notes""" start="00:05:00.200" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""from outside of the data folder.""" start="00:05:02.840" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""Let's make an implicit button type""" start="00:05:07.120" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""that opens a file in this structure.""" start="00:05:08.960" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""To make the pattern stand out in text,""" start="00:05:10.920" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""we use double braces as start and stop delimiters.""" start="00:05:13.520" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""An implicit button instance""" start="00:05:16.640" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""would then look like this.""" start="00:05:20.080" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""We can create that using the `defil' macro like this.""" start="00:05:22.760" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""This invocation of the field""" start="00:05:27.680" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""creates a button type "demo-link-to-file"""" start="00:05:31.840" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""with the start delimiter of "{{"""" start="00:05:34.480" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""and then delimiters of "}}",""" start="00:05:37.280" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""the regular expression ".*" pattern""" start="00:05:40.560" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""to match everything between the delimiters,""" start="00:05:43.320" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""and finally, the action defined by the link expression.""" start="00:05:45.640" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""Pattern substitution is performed""" start="00:05:48.800" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""on the link expression before evaluation""" start="00:05:52.160" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""so that the text that is in between the delimiters""" start="00:05:54.440" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""is inserted where the "\\&" is in the link expression.""" start="00:05:57.920" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""So all in all, implicit type instance will result in""" start="00:06:02.360" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""the link expression of "~/data/FileA",""" start="00:06:07.560" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""which we recognize as a file path.""" start="00:06:11.760" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""With a single-line expression,""" start="00:06:14.520" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""we have created our own hyperbutton syntax""" start="00:06:18.040" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""that we can use in any Emacs buffer""" start="00:06:21.040" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""to link to this custom set of data.""" start="00:06:23.080" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""So let's evaluate the defil and use it.""" start="00:06:25.560" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""I have prepared the files so that they already""" start="00:06:30.960" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""contain some text and implicit links.""" start="00:06:33.760" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""So from the presentation, we can go to FileA,""" start="00:06:36.400" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""and from there to fileB.""" start="00:06:43.760" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""Since the Hyperbole path expression""" start="00:06:48.720" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""supports outline structures, we can,""" start="00:06:51.040" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""as an extra bonus, reference directly""" start="00:06:53.640" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""the headers in the files,""" start="00:06:55.960" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""so we can, for example, link directly""" start="00:06:57.560" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""to "More Notes" in FileB.""" start="00:07:00.160" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""We have now created a simple info system.""" start="00:07:02.600" video="mainVideo-buttons" id="subtitle"]] +[[!template new="1" text="""Looking deeper at the link expression,""" start="00:07:10.720" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""it can be of four different types:""" start="00:07:16.440" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""A file path expression,""" start="00:07:19.840" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""as we have already looked at;""" start="00:07:22.040" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""a brace-delimited key series,""" start="00:07:23.520" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""that is, a series of command keys""" start="00:07:25.960" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""for performing some action,""" start="00:07:27.960" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""much like a keyboard macro;""" start="00:07:29.480" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""An URL; or a function that takes one argument,""" start="00:07:30.960" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""which will be given the button text as input.""" start="00:07:36.240" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""The URL link expression allows you""" start="00:07:38.640" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""to link to web pages.""" start="00:07:42.880" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""So if the data you want to link to""" start="00:07:44.480" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""is accessible through the Web""" start="00:07:46.560" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""and the URL can be constructed""" start="00:07:48.640" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""from the button text in a meaningful way,""" start="00:07:50.880" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""it is possible to do that.""" start="00:07:53.000" video="mainVideo-buttons" id="subtitle"]] +[[!template new="1" text="""Let's create the button type""" start="00:07:54.520" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""that links to GNU software.""" start="00:07:56.160" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""The URL to the GNU software catalog""" start="00:07:57.720" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""is www.gnu.org/software,""" start="00:08:01.089" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""and with what we know about the field,""" start="00:08:04.680" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""it is easy to create the button type for that.""" start="00:08:07.440" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""It can look like this.""" start="00:08:09.640" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""And here are two possible buttons""" start="00:08:11.000" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""linking to Emacs and Hyperbole.""" start="00:08:16.200" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""So let's again evaluate the defil and use it.""" start="00:08:19.320" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""Please note that not all GNU software""" start="00:08:24.200" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""is under that URL,""" start="00:08:28.120" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""so this simple definition will not work""" start="00:08:29.000" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""to link to everything.""" start="00:08:31.000" video="mainVideo-buttons" id="subtitle"]] +[[!template new="1" text="""To highlight the fact that the button action""" start="00:08:32.200" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""does not have to be a link,""" start="00:08:37.280" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""but can be any action,""" start="00:08:39.080" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""let's look at a math example.""" start="00:08:40.600" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""Here is the button type that does some math""" start="00:08:42.200" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""and writes the result in the message area.""" start="00:08:44.800" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""Let's evaluate and use it.""" start="00:08:47.480" video="mainVideo-buttons" id="subtitle"]] +[[!template new="1" text="""Before ending, I would like to mention""" start="00:08:57.160" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""the defal macro.""" start="00:08:59.760" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""It is similar to the defil macro,""" start="00:09:00.760" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""but simpler, since it uses a form""" start="00:09:02.920" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""of the implicit button type with no delimiters.""" start="00:09:04.880" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""It is simply <TYPE LINK-EXPR>.""" start="00:09:07.880" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""So the implicit button type contains the link type""" start="00:09:14.800" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""in clear text.""" start="00:09:17.920" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""Our recent FSF software button""" start="00:09:18.960" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""would be created like this.""" start="00:09:23.120" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""And it would be instantiated in text like this.""" start="00:09:24.855" video="mainVideo-buttons" id="subtitle"]] +[[!template new="1" text="""I have shown how you,""" start="00:09:29.760" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""with the help of the defil macro in Hyperbole,""" start="00:09:34.960" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""quickly can create implicit buttons.""" start="00:09:37.840" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""With those buttons, you can link""" start="00:09:40.240" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""to your personal information""" start="00:09:41.480" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""in the form it may have.""" start="00:09:43.160" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""By the nature of the implicit buttons,""" start="00:09:44.160" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""those can be used from any file in Emacs.""" start="00:09:47.200" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""The button types can be""" start="00:09:49.880" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""created to be used long term,""" start="00:09:52.640" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""but even short term use within the session is possible,""" start="00:09:54.640" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""since the creation is simple and quick.""" start="00:09:57.680" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""Inspired by this, I hope you will find ways""" start="00:09:59.880" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""to create implicit buttons""" start="00:10:03.400" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""that will support you getting to your information.""" start="00:10:04.760" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""For the simplest cases,""" start="00:10:07.360" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""the field and the file macros might be enough.""" start="00:10:09.240" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""For more complicated cases,""" start="00:10:11.400" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""using a tailor-made function can be an option.""" start="00:10:13.360" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""If you know Elisp, use the defib macro""" start="00:10:15.760" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""which gives you full control over the button type.""" start="00:10:19.480" video="mainVideo-buttons" id="subtitle"]] +[[!template text="""Thank you.""" start="00:10:22.240" video="mainVideo-buttons" id="subtitle"]] + +Captioner: sachac Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202022%20buttons%3A%20Linking%20personal%20info%20with%20Hyperbole%20implicit%20buttons) diff --git a/2022/info/buttons-before.md b/2022/info/buttons-before.md index 2bb3e5cc..099d95ed 100644 --- a/2022/info/buttons-before.md +++ b/2022/info/buttons-before.md @@ -3,15 +3,15 @@ In this talk, Mats Lidell shares how you can create your own hyperbutton syntax The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="buttons"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect stroke-width="3" x="439" y="15" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 3:50- 3:55 Short hyperlinks to Python docs</title> <rect x="643" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(648,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect stroke-width="3" x="439" y="15" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] -Format: 11-min talk followed by live Q&A (<https://emacsconf.org/current/buttons/room>) +Format: 11-min talk followed by live Q&A (done) Etherpad: <https://pad.emacsconf.org/2022-buttons> Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A open for participation -<div>Times in different timezones:</div><div class="times" start="2022-12-03T18:40:00Z" end="2022-12-03T18:55:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~1:40 PM - 1:55 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~12:40 PM - 12:55 PM CST (US/Central)<br />Saturday, Dec 3 2022, ~11:40 AM - 11:55 AM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~10:40 AM - 10:55 AM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~6:40 PM - 6:55 PM UTC <br />Saturday, Dec 3 2022, ~7:40 PM - 7:55 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~8:40 PM - 8:55 PM EET (Europe/Athens)<br />Sunday, Dec 4 2022, ~12:10 AM - 12:25 AM IST (Asia/Kolkata)<br />Sunday, Dec 4 2022, ~2:40 AM - 2:55 AM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~3:40 AM - 3:55 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/gen/">Find out how to watch and participate</a></div> +Status: Q&A finished, IRC and pad will be archived on this page + [[!template id="vid" vidid="buttons-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--main.webm" poster="https://media.emacsconf.org/2022/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--main.png" captions="""<track label="English" kind="captions" srclang="en" src="/2022/captions/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--main.vtt" default />""" size="15M" duration="10:32" other_resources="""[Download --main.webm (15MB)](https://media.emacsconf.org/2022/emacsconf-2022-buttons--linking-personal-info-with-hyperbole-implicit-buttons--mats-lidell--main.webm) diff --git a/2022/info/dbus-before.md b/2022/info/dbus-before.md index 1d861438..2b40b354 100644 --- a/2022/info/dbus-before.md +++ b/2022/info/dbus-before.md @@ -1,7 +1,7 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="dbus"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect stroke-width="3" x="588" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect stroke-width="3" x="588" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/detached-before.md b/2022/info/detached-before.md index 82b612e0..0c4ad118 100644 --- a/2022/info/detached-before.md +++ b/2022/info/detached-before.md @@ -3,7 +3,7 @@ In this talk, Niklas Eklund shows how to use detached to manage long-running asy The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="detached"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect stroke-width="3" x="376" y="75" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect stroke-width="3" x="376" y="75" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/devel-before.md b/2022/info/devel-before.md index b17ab588..33499073 100644 --- a/2022/info/devel-before.md +++ b/2022/info/devel-before.md @@ -3,7 +3,7 @@ In this talk, John Wiegley will briefly summarize important developments on the The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="devel"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect stroke-width="3" x="666" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect stroke-width="3" x="666" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/eev-before.md b/2022/info/eev-before.md index 6cd50fd1..a4bbb884 100644 --- a/2022/info/eev-before.md +++ b/2022/info/eev-before.md @@ -1,15 +1,15 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="eev"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect stroke-width="3" x="619" y="75" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect stroke-width="3" x="619" y="75" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] Format: 8-min talk followed by IRC Q&A (<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-org,emacsconf-accessible,emacsconf-gen,emacsconf-dev">#emacsconf-dev</a>) Etherpad: <https://pad.emacsconf.org/2022-eev> Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Q&A starting (not yet open for joining) -<div>Times in different timezones:</div><div class="times" start="2022-12-03T20:35:00Z" end="2022-12-03T20:40:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~3:35 PM - 3:40 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~2:35 PM - 2:40 PM CST (US/Central)<br />Saturday, Dec 3 2022, ~1:35 PM - 1:40 PM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~12:35 PM - 12:40 PM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~8:35 PM - 8:40 PM UTC <br />Saturday, Dec 3 2022, ~9:35 PM - 9:40 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~10:35 PM - 10:40 PM EET (Europe/Athens)<br />Sunday, Dec 4 2022, ~2:05 AM - 2:10 AM IST (Asia/Kolkata)<br />Sunday, Dec 4 2022, ~4:35 AM - 4:40 AM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~5:35 AM - 5:40 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/dev/">Find out how to watch and participate</a></div> +Status: Q&A finished, IRC and pad will be archived on this page + [[!template id="vid" vidid="eev-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-eev--bidirectional-links-with-eev--eduardo-ochs--main.webm" poster="https://media.emacsconf.org/2022/emacsconf-2022-eev--bidirectional-links-with-eev--eduardo-ochs--main.png" ${captions} size="17M" duration="7:57" other_resources="""[Download --main.webm (17MB)](https://media.emacsconf.org/2022/emacsconf-2022-eev--bidirectional-links-with-eev--eduardo-ochs--main.webm) diff --git a/2022/info/eshell-before.md b/2022/info/eshell-before.md index ec97e7da..2a0a08fd 100644 --- a/2022/info/eshell-before.md +++ b/2022/info/eshell-before.md @@ -3,7 +3,7 @@ In this talk, Howard Abrams shows how eshell combines the best of Emacs Lisp and The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="eshell"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect stroke-width="3" x="439" y="75" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect stroke-width="3" x="439" y="75" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/fanfare-before.md b/2022/info/fanfare-before.md index 3b372d9c..d89c6a26 100644 --- a/2022/info/fanfare-before.md +++ b/2022/info/fanfare-before.md @@ -1,14 +1,14 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="fanfare"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect stroke-width="3" x="698" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect stroke-width="3" x="698" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] -Format: 10-min talk followed by live Q&A (<https://emacsconf.org/current/fanfare/room>) +Format: 11-min talk followed by live Q&A (<https://emacsconf.org/current/fanfare/room>) Etherpad: <https://pad.emacsconf.org/2022-fanfare> Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Waiting for video from speaker +Status: Talk captioned <div>Times in different timezones:</div><div class="times" start="2022-12-04T21:25:00Z" end="2022-12-04T21:35:00Z"><div class="conf-time">Sunday, Dec 4 2022, ~4:25 PM - 4:35 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 4 2022, ~3:25 PM - 3:35 PM CST (US/Central)<br />Sunday, Dec 4 2022, ~2:25 PM - 2:35 PM MST (US/Mountain)<br />Sunday, Dec 4 2022, ~1:25 PM - 1:35 PM PST (US/Pacific)<br />Sunday, Dec 4 2022, ~9:25 PM - 9:35 PM UTC <br />Sunday, Dec 4 2022, ~10:25 PM - 10:35 PM CET (Europe/Paris)<br />Sunday, Dec 4 2022, ~11:25 PM - 11:35 PM EET (Europe/Athens)<br />Monday, Dec 5 2022, ~2:55 AM - 3:05 AM IST (Asia/Kolkata)<br />Monday, Dec 5 2022, ~5:25 AM - 5:35 AM +08 (Asia/Singapore)<br />Monday, Dec 5 2022, ~6:25 AM - 6:35 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/gen/">Find out how to watch and participate</a></div> diff --git a/2022/info/grail-before.md b/2022/info/grail-before.md index e36817dd..ed45e799 100644 --- a/2022/info/grail-before.md +++ b/2022/info/grail-before.md @@ -1,7 +1,7 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="grail"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect stroke-width="3" x="525" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect stroke-width="3" x="525" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/handwritten-after.md b/2022/info/handwritten-after.md index a9839123..44ef3980 100644 --- a/2022/info/handwritten-after.md +++ b/2022/info/handwritten-after.md @@ -4,116 +4,118 @@ <a name="handwritten-mainVideo-transcript"></a> # Transcript -[[!template text="Can you recognize this building?" start="00:00:00.000" video="mainVideo-handwritten" id="subtitle"]] -[[!template new="1" text="Some of you may have recognized this." start="00:00:08.080" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="This building is called" start="00:00:09.800" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="the John Hancock building." start="00:00:11.440" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="This is in Chicago." start="00:00:14.480" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="I recently bought this building." start="00:00:17.360" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Isn't it nice?" start="00:00:19.480" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Heavens no!" start="00:00:21.320" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="I am in my home in Pune in India." start="00:00:23.240" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="I am Bala Ramadurai," start="00:00:27.640" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="an author, professor, and an innovation coach." start="00:00:29.160" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Hello and welcome to my talk on" start="00:00:33.560" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="“How to incorporate handwritten notes" start="00:00:36.000" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="into Emacs Org Mode”" start="00:00:39.560" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Now, why did I show you this building?" start="00:00:42.280" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="The name is of interest for this talk." start="00:00:45.920" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="In the US, someone's signature is" start="00:00:49.400" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="also referred to as their Hancock." start="00:00:52.360" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Your handwriting is pretty much part of your identity." start="00:00:55.200" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="It is as fundamental as that." start="00:00:59.680" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Of course, there is a movie by that name too, Hancock." start="00:01:03.120" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="I could have started with a clip from that movie," start="00:01:07.600" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="but in spite of Will Smith and Charlize Theron," start="00:01:12.000" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="both my favorite movie stars in the movie, I hated it." start="00:01:15.880" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="[Clip from Hancock (2008)]" start="00:01:24.160" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="But I digress." start="00:01:35.160" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Handwriting has been a fascinating topic for me." start="00:01:40.480" video="mainVideo-handwritten" id="subtitle"]] -[[!template new="1" text="However, note-taking has always been on my computer," start="00:01:44.200" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="in particular, in the Emacs Org Mode system." start="00:01:49.720" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="It is so easy to note down anything," start="00:01:54.120" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="add a schedule, add a deadline," start="00:01:57.360" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="search anything you want, link anything you want," start="00:01:59.840" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="export it to any format, track what you've been doing," start="00:02:04.280" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="clock your tasks, and on and on and on." start="00:02:07.920" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="It's such a squeaky-clean system to" start="00:02:12.560" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="track everything and link it to" start="00:02:15.520" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="anything from the digital world." start="00:02:17.560" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Sharing the original notes is still a pain in the rear," start="00:02:20.800" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="but for personal stuff, it's awesome." start="00:02:24.640" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="But then what about handwriting?" start="00:02:29.360" video="mainVideo-handwritten" id="subtitle"]] -[[!template new="1" text="Research seems to suggest that handwritten notes" start="00:02:32.640" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="can enhance clarity of thought, retention," start="00:02:35.640" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="sometimes even getting rid of your worries." start="00:02:40.200" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="[Fried, C. B. (2008). In-class laptop use and -its effects on student learning]" start="00:02:50.560" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="[Speaker displays articles on Note-taking]" start="00:03:06.400" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="My experience seems to agree with that too." start="00:03:13.640" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="As a professor, my fear has always been" start="00:03:17.840" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="this quote, “Lecturing is that mysterious process" start="00:03:21.200" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="by means of which the contents of the notebook" start="00:03:25.200" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="of the professor are transferred" start="00:03:29.240" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="through the instrument of the fountain pen" start="00:03:31.880" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="to the notebook of the student" start="00:03:34.920" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="without passing through the mind of either.”" start="00:03:37.280" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Hmmm... So, question — How do we combine" start="00:03:40.640" video="mainVideo-handwritten" id="subtitle"]] -[[!template new="1" text="the efficient Org Mode system" start="00:03:45.680" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="with the effective handwritten note-taking system?" start="00:03:48.160" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Merge the systems together. Absolutely." start="00:03:53.720" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="How do you do that?" start="00:03:56.800" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Step 1: Write the notes by hand" start="00:03:59.360" video="mainVideo-handwritten" id="subtitle"]] -[[!template new="1" text="on a notebook. Pen, pencil." start="00:04:03.680" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Keep some convention for yourselves" start="00:04:06.080" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="for tracking tasks like a star or an asterisk." start="00:04:09.000" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Step 2: Scan them using" start="00:04:13.040" video="mainVideo-handwritten" id="subtitle"]] -[[!template new="1" text="your favourite mobile app." start="00:04:16.400" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="I recommend Adobe Scan or Dropbox." start="00:04:18.560" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Step 3: store the document as a JPG file" start="00:04:23.440" video="mainVideo-handwritten" id="subtitle"]] -[[!template new="1" text="into a folder called Inbox." start="00:04:30.000" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Make sure this syncs into a cloud storage folder" start="00:04:32.680" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="and your Org Mode system" start="00:04:37.760" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="has access to this folder." start="00:04:39.480" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="(Optional) Step 4: convert the notes into text" start="00:04:41.120" video="mainVideo-handwritten" id="subtitle"]] -[[!template new="1" text="using Google Keep or just type" start="00:04:45.920" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="the damn thing one more time." start="00:04:49.320" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Then you can process that" start="00:04:51.520" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="in your Org Mode system" start="00:04:54.920" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="as you always do in whatever" start="00:04:56.240" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="is there in your inbox." start="00:04:59.640" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="But, three steps or four before I get access" start="00:05:02.120" video="mainVideo-handwritten" id="subtitle"]] -[[!template new="1" text="to my notes and into my Org Mode?" start="00:05:06.120" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="What a precious waste of time." start="00:05:09.400" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="I'd rather be tinkering with my" start="00:05:11.640" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="config file in that time, correct?" start="00:05:14.120" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Boy..." start="00:05:18.800" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Get or buy or gift or convince your partner," start="00:05:19.360" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="parent, or anybody else to gift yourself" start="00:05:24.920" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="a touch-enabled large device." start="00:05:29.720" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Then use an app like OneNote to write notes" start="00:05:31.960" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="on the device and link the handwritten note" start="00:05:37.880" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="directly into Org Mode by copying the link." start="00:05:41.440" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="You can use a shortcut like Ctrl-1" start="00:05:46.240" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="to mark the todos, but that means it remains" start="00:05:54.080" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="only on OneNote ecosystem, the todos." start="00:05:59.480" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="You can use the same app to also convert" start="00:06:05.160" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="the handwritten note into text" start="00:06:14.920" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="just by the click of a button." start="00:06:18.320" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="As a bonus, you can even include screenshots" start="00:06:23.560" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="from your online meetings." start="00:06:27.360" video="mainVideo-handwritten" id="subtitle"]] -[[!template new="1" text="I like both my options." start="00:06:30.920" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Option 1: use a regular notebook," start="00:06:33.440" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="scan and process them into my inbox." start="00:06:36.440" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Option 2: write the notes in a digital device" start="00:06:40.840" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="and convert them into text." start="00:06:44.560" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Or, third option, I appeal to thee," start="00:06:46.480" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="oh great community, can you please build a package" start="00:06:52.480" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="inside Org Mode that recognises handwriting" start="00:06:57.000" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="to export it into our Org Mode, Emacs Org Mode." start="00:07:00.960" video="mainVideo-handwritten" id="subtitle"]] -[[!template text="Thank you so much for your attention. Bye." start="00:07:10.040" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Can you recognize this building?""" start="00:00:00.000" video="mainVideo-handwritten" id="subtitle"]] +[[!template new="1" text="""Some of you may have recognized this.""" start="00:00:08.080" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""This building is called""" start="00:00:09.800" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""the John Hancock building.""" start="00:00:11.440" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""This is in Chicago.""" start="00:00:14.480" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""I recently bought this building.""" start="00:00:17.360" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Isn't it nice?""" start="00:00:19.480" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Heavens no!""" start="00:00:21.320" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""I am in my home in Pune in India.""" start="00:00:23.240" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""I am Bala Ramadurai,""" start="00:00:27.640" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""an author, professor, and an innovation coach.""" start="00:00:29.160" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Hello and welcome to my talk on""" start="00:00:33.560" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""“How to incorporate handwritten notes""" start="00:00:36.000" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""into Emacs Org Mode”""" start="00:00:39.560" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Now, why did I show you this building?""" start="00:00:42.280" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""The name is of interest for this talk.""" start="00:00:45.920" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""In the US, someone's signature is""" start="00:00:49.400" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""also referred to as their Hancock.""" start="00:00:52.360" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Your handwriting is pretty much part of your identity.""" start="00:00:55.200" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""It is as fundamental as that.""" start="00:00:59.680" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Of course, there is a movie by that name too, Hancock.""" start="00:01:03.120" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""I could have started with a clip from that movie,""" start="00:01:07.600" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""but in spite of Will Smith and Charlize Theron,""" start="00:01:12.000" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""both my favorite movie stars in the movie, I hated it.""" start="00:01:15.880" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""[Clip from Hancock (2008)]""" start="00:01:24.160" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""But I digress.""" start="00:01:35.160" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Handwriting has been a fascinating topic for me.""" start="00:01:40.480" video="mainVideo-handwritten" id="subtitle"]] +[[!template new="1" text="""However, note-taking has always been on my computer,""" start="00:01:44.200" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""in particular, in the Emacs Org Mode system.""" start="00:01:49.720" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""It is so easy to note down anything,""" start="00:01:54.120" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""add a schedule, add a deadline,""" start="00:01:57.360" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""search anything you want, link anything you want,""" start="00:01:59.840" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""export it to any format, track what you've been doing,""" start="00:02:04.280" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""clock your tasks, and on and on and on.""" start="00:02:07.920" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""It's such a squeaky-clean system to""" start="00:02:12.560" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""track everything and link it to""" start="00:02:15.520" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""anything from the digital world.""" start="00:02:17.560" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Sharing the original notes is still a pain in the rear,""" start="00:02:20.800" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""but for personal stuff, it's awesome.""" start="00:02:24.640" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""But then what about handwriting?""" start="00:02:29.360" video="mainVideo-handwritten" id="subtitle"]] +[[!template new="1" text="""Research seems to suggest that handwritten notes""" start="00:02:32.640" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""can enhance clarity of thought, retention,""" start="00:02:35.640" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""sometimes even getting rid of your worries.""" start="00:02:40.200" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""[Fried, C. B. (2008). In-class laptop use and +its effects on student learning]""" start="00:02:50.560" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""[Speaker displays articles on Note-taking]""" start="00:03:06.400" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""My experience seems to agree with that too.""" start="00:03:13.640" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""As a professor, my fear has always been""" start="00:03:17.840" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""this quote, “Lecturing is that mysterious process""" start="00:03:21.200" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""by means of which the contents of the notebook""" start="00:03:25.200" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""of the professor are transferred""" start="00:03:29.240" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""through the instrument of the fountain pen""" start="00:03:31.880" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""to the notebook of the student""" start="00:03:34.920" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""without passing through the mind of either.”""" start="00:03:37.280" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Hmmm... So, question — How do we combine""" start="00:03:40.640" video="mainVideo-handwritten" id="subtitle"]] +[[!template new="1" text="""the efficient Org Mode system""" start="00:03:45.680" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""with the effective handwritten note-taking system?""" start="00:03:48.160" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Merge the systems together. Absolutely.""" start="00:03:53.720" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""How do you do that?""" start="00:03:56.800" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Step 1: Write the notes by hand""" start="00:03:59.360" video="mainVideo-handwritten" id="subtitle"]] +[[!template new="1" text="""on a notebook. Pen, pencil.""" start="00:04:03.680" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Keep some convention for yourselves""" start="00:04:06.080" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""for tracking tasks like a star or an asterisk.""" start="00:04:09.000" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Step 2: Scan them using""" start="00:04:13.040" video="mainVideo-handwritten" id="subtitle"]] +[[!template new="1" text="""your favourite mobile app.""" start="00:04:16.400" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""I recommend Adobe Scan or Dropbox.""" start="00:04:18.560" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Step 3: store the document as a JPG file""" start="00:04:23.440" video="mainVideo-handwritten" id="subtitle"]] +[[!template new="1" text="""into a folder called Inbox.""" start="00:04:30.000" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Make sure this syncs into a cloud storage folder""" start="00:04:32.680" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""and your Org Mode system""" start="00:04:37.760" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""has access to this folder.""" start="00:04:39.480" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""(Optional) Step 4: convert the notes into text""" start="00:04:41.120" video="mainVideo-handwritten" id="subtitle"]] +[[!template new="1" text="""using Google Keep or just type""" start="00:04:45.920" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""the damn thing one more time.""" start="00:04:49.320" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Then you can process that""" start="00:04:51.520" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""in your Org Mode system""" start="00:04:54.920" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""as you always do in whatever""" start="00:04:56.240" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""is there in your inbox.""" start="00:04:59.640" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""But, three steps or four before I get access""" start="00:05:02.120" video="mainVideo-handwritten" id="subtitle"]] +[[!template new="1" text="""to my notes and into my Org Mode?""" start="00:05:06.120" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""What a precious waste of time.""" start="00:05:09.400" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""I'd rather be tinkering with my""" start="00:05:11.640" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""config file in that time, correct?""" start="00:05:14.120" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Boy...""" start="00:05:18.800" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Get or buy or gift or convince your partner,""" start="00:05:19.360" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""parent, or anybody else to gift yourself""" start="00:05:24.920" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""a touch-enabled large device.""" start="00:05:29.720" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Then use an app like OneNote to write notes""" start="00:05:31.960" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""on the device and link the handwritten note""" start="00:05:37.880" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""directly into Org Mode by copying the link.""" start="00:05:41.440" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""You can use a shortcut like Ctrl-1""" start="00:05:46.240" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""to mark the todos, but that means it remains""" start="00:05:54.080" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""only on OneNote ecosystem, the todos.""" start="00:05:59.480" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""You can use the same app to also convert""" start="00:06:05.160" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""the handwritten note into text""" start="00:06:14.920" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""just by the click of a button.""" start="00:06:18.320" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""As a bonus, you can even include screenshots""" start="00:06:23.560" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""from your online meetings.""" start="00:06:27.360" video="mainVideo-handwritten" id="subtitle"]] +[[!template new="1" text="""I like both my options.""" start="00:06:30.920" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Option 1: use a regular notebook,""" start="00:06:33.440" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""scan and process them into my inbox.""" start="00:06:36.440" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Option 2: write the notes in a digital device""" start="00:06:40.840" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""and convert them into text.""" start="00:06:44.560" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Or, third option, I appeal to thee,""" start="00:06:46.480" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""oh great community, can you please build a package""" start="00:06:52.480" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""inside Org Mode that recognises handwriting""" start="00:06:57.000" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""to export it into our Org Mode, Emacs Org Mode.""" start="00:07:00.960" video="mainVideo-handwritten" id="subtitle"]] +[[!template text="""Thank you so much for your attention. Bye.""" start="00:07:10.040" video="mainVideo-handwritten" id="subtitle"]] + +Captioner: jai Questions or comments? Please e-mail [bala@balaramadurai.net](mailto:bala@balaramadurai.net?subject=Comment%20for%20EmacsConf%202022%20handwritten%3A%20How%20to%20incorporate%20handwritten%20notes%20into%20Emacs%20Orgmode) diff --git a/2022/info/handwritten-before.md b/2022/info/handwritten-before.md index c3eddcbd..a48066e2 100644 --- a/2022/info/handwritten-before.md +++ b/2022/info/handwritten-before.md @@ -3,15 +3,15 @@ In this talk, Bala Ramadurai shares how he takes handwritten notes and includes The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="handwritten"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect stroke-width="3" x="101" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 3:50- 3:55 Short hyperlinks to Python docs</title> <rect x="643" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(648,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect stroke-width="3" x="101" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] -Format: 8-min talk followed by live Q&A (<https://emacsconf.org/current/handwritten/room>) +Format: 8-min talk followed by live Q&A (done) Etherpad: <https://pad.emacsconf.org/2022-handwritten> Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A open for participation -<div>Times in different timezones:</div><div class="times" start="2022-12-03T15:05:00Z" end="2022-12-03T15:15:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~10:05 AM - 10:15 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~9:05 AM - 9:15 AM CST (US/Central)<br />Saturday, Dec 3 2022, ~8:05 AM - 8:15 AM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~7:05 AM - 7:15 AM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~3:05 PM - 3:15 PM UTC <br />Saturday, Dec 3 2022, ~4:05 PM - 4:15 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~5:05 PM - 5:15 PM EET (Europe/Athens)<br />Saturday, Dec 3 2022, ~8:35 PM - 8:45 PM IST (Asia/Kolkata)<br />Saturday, Dec 3 2022, ~11:05 PM - 11:15 PM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~12:05 AM - 12:15 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/gen/">Find out how to watch and participate</a></div> +Status: Q&A finished, IRC and pad will be archived on this page + [[!template id="vid" vidid="handwritten-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-handwritten--how-to-incorporate-handwritten-notes-into-emacs-orgmode--bala-ramadurai--main.webm" poster="https://media.emacsconf.org/2022/emacsconf-2022-handwritten--how-to-incorporate-handwritten-notes-into-emacs-orgmode--bala-ramadurai--main.png" captions="""<track label="English" kind="captions" srclang="en" src="/2022/captions/emacsconf-2022-handwritten--how-to-incorporate-handwritten-notes-into-emacs-orgmode--bala-ramadurai--main.vtt" default />""" size="80M" duration="7:39" other_resources="""[Download --main.webm (80MB)](https://media.emacsconf.org/2022/emacsconf-2022-handwritten--how-to-incorporate-handwritten-notes-into-emacs-orgmode--bala-ramadurai--main.webm) diff --git a/2022/info/haskell-after.md b/2022/info/haskell-after.md index 8418fd81..1a00c5a0 100644 --- a/2022/info/haskell-after.md +++ b/2022/info/haskell-after.md @@ -4,459 +4,461 @@ <a name="haskell-mainVideo-transcript"></a> # Transcript -[[!template new="1" text="Today, I will talk about Haskell code exploration for Emacs." start="00:00:00.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="What is Haskell? It is a purely functional language." start="00:00:03.500" video="mainVideo-haskell" id="subtitle"]] -[[!template text="For example, every value in Haskell is immutable." start="00:00:06.500" video="mainVideo-haskell" id="subtitle"]] -[[!template text="And it is the main compiler of Haskell, GHC." start="00:00:09.500" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It provides API for the whole compilation pipeline." start="00:00:13.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="For example, the tools mentioned in this talk," start="00:00:16.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="including hcel and haddorg," start="00:00:18.424" video="mainVideo-haskell" id="subtitle"]] -[[!template text="they use, they heavily utilize the GHC front-end API" start="00:00:20.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="for parsing and understanding" start="00:00:24.500" video="mainVideo-haskell" id="subtitle"]] -[[!template text="the identifiers in Haskell source files." start="00:00:26.744" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Roughly speaking," start="00:00:29.500" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="a Haskell program consists of several parts." start="00:00:31.544" video="mainVideo-haskell" id="subtitle"]] -[[!template text="it begins with some front matters, including," start="00:00:34.664" video="mainVideo-haskell" id="subtitle"]] -[[!template text="for example, language extensions," start="00:00:37.064" video="mainVideo-haskell" id="subtitle"]] -[[!template text="which are optional language features one might want to use" start="00:00:40.024" video="mainVideo-haskell" id="subtitle"]] -[[!template text="for convenience." start="00:00:44.064" video="mainVideo-haskell" id="subtitle"]] -[[!template text="The front matters also contain module exports." start="00:00:48.464" video="mainVideo-haskell" id="subtitle"]] -[[!template text="So for example, here we define," start="00:00:52.500" video="mainVideo-haskell" id="subtitle"]] -[[!template text="we declare module F2Md.Config" start="00:00:55.784" video="mainVideo-haskell" id="subtitle"]] -[[!template text="for this Haskell source file," start="00:00:58.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="which exports these four identifiers" start="00:01:00.984" video="mainVideo-haskell" id="subtitle"]] -[[!template text="that other source files can use when importing F2Md.Config." start="00:01:03.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="And the next will be" start="00:01:07.500" video="mainVideo-haskell" id="subtitle"]] -[[!template text="a block of imports so that we can use libraries" start="00:01:10.784" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and identifiers in these libraries." start="00:01:14.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="The bulk of a Haskell source file normally is" start="00:01:17.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="a list of declarations," start="00:01:21.744" video="mainVideo-haskell" id="subtitle"]] -[[!template text="including values, types, and instances, and so on." start="00:01:23.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="The difference between a value and a type is that" start="00:01:26.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="the type of a value is a type," start="00:01:29.184" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and the type of a type is a kind." start="00:01:30.500" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="For example, here's a small block of Haskell source code." start="00:01:34.064" video="mainVideo-haskell" id="subtitle"]] -[[!template text="We define Range type" start="00:01:38.584" video="mainVideo-haskell" id="subtitle"]] -[[!template text="from a lower-end integer to a higher-end integer." start="00:01:41.504" video="mainVideo-haskell" id="subtitle"]] -[[!template text="We also declare a value r of the type Range," start="00:01:45.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="which is Range from 2 to 7," start="00:01:51.464" video="mainVideo-haskell" id="subtitle"]] -[[!template text="because in Haskell, we like to--" start="00:01:54.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="by default, functions can be curried," start="00:02:01.104" video="mainVideo-haskell" id="subtitle"]] -[[!template text="which basically means, by default, we want to utilize" start="00:02:04.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="the partial application of functions." start="00:02:09.904" video="mainVideo-haskell" id="subtitle"]] -[[!template text="We don't require parens surrounding arguments" start="00:02:12.000" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="when invoking a function." start="00:02:17.384" video="mainVideo-haskell" id="subtitle"]] -[[!template text="That makes it possible, if you want," start="00:02:19.464" video="mainVideo-haskell" id="subtitle"]] -[[!template text="to write Haskell like Lisp" start="00:02:22.725" video="mainVideo-haskell" id="subtitle"]] -[[!template text="by adding a bit of redundant parens." start="00:02:25.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="So for example," start="00:02:28.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="here are two blocks of code, one Lisp, one Haskell," start="00:02:30.144" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and they look quite similar to each other." start="00:02:33.784" video="mainVideo-haskell" id="subtitle"]] -[[!template text="What is a code explorer?" start="00:02:36.000" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="A code explorer is a tool" start="00:02:38.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="to browse its code base to its code comprehension." start="00:02:39.544" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Code explorer commonly comes with" start="00:02:42.724" video="mainVideo-haskell" id="subtitle"]] -[[!template text="several functionalities or features," start="00:02:45.424" video="mainVideo-haskell" id="subtitle"]] -[[!template text="including a cross-referencer," start="00:02:47.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="which allows going to definitions of an identifier at points" start="00:02:49.344" video="mainVideo-haskell" id="subtitle"]] -[[!template text="or looking up references of an identifier," start="00:02:53.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="like where it is used." start="00:02:56.544" video="mainVideo-haskell" id="subtitle"]] -[[!template text="So the example in Emacs would be xref." start="00:02:58.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Code explorer also would be able to show you" start="00:03:04.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="documentation and signatures of identifiers at points." start="00:03:07.704" video="mainVideo-haskell" id="subtitle"]] -[[!template text="In Emacs, that would be eldoc." start="00:03:10.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It also commonly allows you to search for identifiers." start="00:03:13.984" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Something like that in Emacs" start="00:03:17.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="could be describe-function and find-function." start="00:03:19.984" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Code explorer is normally" start="00:03:22.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="quite often implemented in two parts," start="00:03:24.784" video="mainVideo-haskell" id="subtitle"]] -[[!template text="the indexer and the server," start="00:03:27.464" video="mainVideo-haskell" id="subtitle"]] -[[!template text="where the indexer parses the source code files," start="00:03:28.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="indexes the identifiers," start="00:03:32.584" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and stores the information of identifiers" start="00:03:34.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="like the definition, size, and the currencies," start="00:03:36.384" video="mainVideo-haskell" id="subtitle"]] -[[!template text="either in databases or in files." start="00:03:38.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="The other part is the server," start="00:03:42.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="which uses the database created by the indexer" start="00:03:44.544" video="mainVideo-haskell" id="subtitle"]] -[[!template text="to serve the information of the identifier." start="00:03:49.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Before I present my solution to code exploring," start="00:03:53.104" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="some description of prior art is in order." start="00:03:57.104" video="mainVideo-haskell" id="subtitle"]] -[[!template text="There are several tools that you can use" start="00:04:01.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="to aid code exploration," start="00:04:05.384" video="mainVideo-haskell" id="subtitle"]] -[[!template text="including tech-based tools like hasktags and hs-tags." start="00:04:08.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="The limitation with these tools" start="00:04:13.544" video="mainVideo-haskell" id="subtitle"]] -[[!template text="is they are focused on the current projects only" start="00:04:15.584" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and do not work" start="00:04:18.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="for cross-packaging reference and definition." start="00:04:19.704" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Another problem with the tag-based tools is" start="00:04:26.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="they might not handle symbols with the same name properly." start="00:04:31.045" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Sometimes they get confused," start="00:04:34.784" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and they ask you to choose which definition," start="00:04:36.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="what is the correct definition site," start="00:04:43.424" video="mainVideo-haskell" id="subtitle"]] -[[!template text="even though the occurrence of the symbol" start="00:04:46.024" video="mainVideo-haskell" id="subtitle"]] -[[!template text="or the symbol at point has only one definition ambiguously." start="00:04:49.344" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Another tool is the haskell-mode." start="00:04:55.000" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="It has some limited support for eldoc" start="00:04:58.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="by displaying the signature of an identifier at points," start="00:05:02.784" video="mainVideo-haskell" id="subtitle"]] -[[!template text="but the identifier has to be something" start="00:05:06.704" video="mainVideo-haskell" id="subtitle"]] -[[!template text="that is commonly known or sort of built-in" start="00:05:11.864" video="mainVideo-haskell" id="subtitle"]] -[[!template text="or come from the base library of Haskell." start="00:05:15.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="So for example," start="00:05:18.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="it works for common functions like head and tail." start="00:05:20.344" video="mainVideo-haskell" id="subtitle"]] -[[!template text="And you can see that the signature is displayed here." start="00:05:24.344" video="mainVideo-haskell" id="subtitle"]] -[[!template text="However, it does not work for," start="00:05:27.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="let's say, IO. IO is a type." start="00:05:29.664" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Maybe that's the reason." start="00:05:31.904" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let's find another function" start="00:05:33.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="that's not from the base library." start="00:05:37.424" video="mainVideo-haskell" id="subtitle"]] -[[!template text="toJSON is from the Aeson library," start="00:05:40.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="so no signature is displayed here." start="00:05:42.000" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="It also provides" start="00:05:47.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="some sort of goto-declaration functionality" start="00:05:51.264" video="mainVideo-haskell" id="subtitle"]] -[[!template text="to jump to any declaration in a file." start="00:05:53.424" video="mainVideo-haskell" id="subtitle"]] -[[!template text="To do that, one has to first run haskell-decl-scan-mode" start="00:05:56.424" video="mainVideo-haskell" id="subtitle"]] -[[!template text="to enter this minor mode." start="00:06:00.664" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Then we can run imenu to go to any definition," start="00:06:03.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="to go to any declaration, like getHomeR." start="00:06:08.144" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Apparently, after running that," start="00:06:11.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="we are able to go to definition." start="00:06:13.824" video="mainVideo-haskell" id="subtitle"]] -[[!template text="So for example, let's see," start="00:06:16.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="we want to find definition of getCityJR." start="00:06:19.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="And indeed, it works" start="00:06:22.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="if it's within the same source file, of course." start="00:06:25.624" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It still does not work for cross-packaging identifiers." start="00:06:28.624" video="mainVideo-haskell" id="subtitle"]] -[[!template text="So HandlerFor is probably an identifier from servant." start="00:06:32.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Or no, not necessarily servant. Maybe WAI." start="00:06:37.024" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Anyway, it's another library." start="00:06:40.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="And how about find-references?" start="00:06:43.504" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="find-references also works somehow for this file." start="00:06:50.504" video="mainVideo-haskell" id="subtitle"]] -[[!template text="How about WidgetFor?" start="00:07:01.224" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It works for WidgetFor too." start="00:07:06.784" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It has some support for goto-definition and find-references." start="00:07:13.744" video="mainVideo-haskell" id="subtitle"]] -[[!template text="But as usual, it does not support such things cross-package." start="00:07:18.000" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="And finally, we have" start="00:07:26.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="the Sledgehammer HLS Haskell language server." start="00:07:27.365" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It can be used with EGLOT." start="00:07:31.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="But the problem with HLS, HLS has many many features" start="00:07:33.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="because it is a language server," start="00:07:40.904" video="mainVideo-haskell" id="subtitle"]] -[[!template text="like renaming, like eldoc for standard libraries, and so on." start="00:07:42.944" video="mainVideo-haskell" id="subtitle"]] -[[!template text="But the problem with HLS is, one, that it is very, very slow." start="00:07:51.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="And I wouldn't use it with my laptop." start="00:07:57.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="And two, it also does not support cross-package referencing." start="00:08:00.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="In fact, there's an outstanding GitHub issue about this." start="00:08:05.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="So cross-package referencing and goto-definition" start="00:08:08.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="is sort of a common shortfall," start="00:08:13.064" video="mainVideo-haskell" id="subtitle"]] -[[!template text="a common problem for these existing Haskell code explorers." start="00:08:17.264" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="Then finally, we also have hoogle and hackage." start="00:08:21.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Hoogle is a search engine for Haskell identifiers," start="00:08:23.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and the results link to Hackage," start="00:08:28.384" video="mainVideo-haskell" id="subtitle"]] -[[!template text="which is the Haskell documentation website" start="00:08:30.744" video="mainVideo-haskell" id="subtitle"]] -[[!template text="for all Haskell libraries." start="00:08:33.704" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Haskell Hackage has functionality" start="00:08:35.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="where you can jump to the source code file rendered in HTML," start="00:08:40.104" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and you can click on the identifiers there" start="00:08:45.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="to jump to definitions," start="00:08:49.544" video="mainVideo-haskell" id="subtitle"]] -[[!template text="but it does not support find references," start="00:08:51.624" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and it is rather basic." start="00:08:54.144" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="Then I learned about haskell-code-explorer," start="00:08:59.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="which is a fully-fledged Haskell code explorer." start="00:09:01.744" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It is written by someone else." start="00:09:05.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It is a web application" start="00:09:07.824" video="mainVideo-haskell" id="subtitle"]] -[[!template text="for exploring Haskell package codebases." start="00:09:09.264" video="mainVideo-haskell" id="subtitle"]] -[[!template text="The official reference instance for haskell-code-explorer" start="00:09:12.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="is available at this URL, which I will demo soon." start="00:09:16.344" video="mainVideo-haskell" id="subtitle"]] -[[!template text="What I did with these packages... I ported it to GHC 9.2." start="00:09:19.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="I renamed it to hcel because I want to focus on Emacs clients" start="00:09:25.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="rather than JavaScript clients, which I will explain later." start="00:09:29.144" video="mainVideo-haskell" id="subtitle"]] -[[!template text="And I also wrote an Emacs client package, of course." start="00:09:31.000" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="This is what haskell-code-explorer looks like." start="00:09:37.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="On the homepage, it is a list of indexed packages" start="00:09:41.504" video="mainVideo-haskell" id="subtitle"]] -[[!template text="indexed by the indexer." start="00:09:47.024" video="mainVideo-haskell" id="subtitle"]] -[[!template text="One can filter it by the package name" start="00:09:50.144" video="mainVideo-haskell" id="subtitle"]] -[[!template text="or look for identifiers directly across all packages." start="00:09:53.944" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let's have a look at base. There are three versions." start="00:10:05.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let's have a look at the latest version, 4.12.0.0." start="00:10:09.984" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Once entering the package view," start="00:10:15.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="you are shown a list of all modules by their path," start="00:10:19.064" video="mainVideo-haskell" id="subtitle"]] -[[!template text="as well as a tree of these module files." start="00:10:24.544" video="mainVideo-haskell" id="subtitle"]] -[[!template text="You can filter by module name or file name," start="00:10:29.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="or you can search for identifier within the same package" start="00:10:32.624" video="mainVideo-haskell" id="subtitle"]] -[[!template text="or in all packages." start="00:10:34.424" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let's say we want to learn about Control.Monad." start="00:10:36.000" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="Now we are in the module view." start="00:10:43.304" video="mainVideo-haskell" id="subtitle"]] -[[!template text="The source file is presented to you," start="00:10:46.984" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and it has links to identifiers." start="00:10:49.904" video="mainVideo-haskell" id="subtitle"]] -[[!template text="When you hover over them, the documentation shows up," start="00:10:55.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="including the signature where it is defined." start="00:11:01.904" video="mainVideo-haskell" id="subtitle"]] -[[!template text="You can go to its definition or find references." start="00:11:05.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let's say we want to go to the definition of Monad." start="00:11:10.344" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It jumps to the definition site of the monad type class." start="00:11:20.264" video="mainVideo-haskell" id="subtitle"]] -[[!template text="If we click at the definition site," start="00:11:25.584" video="mainVideo-haskell" id="subtitle"]] -[[!template text="it brings up a list of references." start="00:11:28.104" video="mainVideo-haskell" id="subtitle"]] -[[!template text="On the left, you can choose" start="00:11:32.224" video="mainVideo-haskell" id="subtitle"]] -[[!template text="which package you want to find references of monad in." start="00:11:33.744" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let's look at the random one, avwx." start="00:11:39.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Here is a list of results where Monad is used in avwx." start="00:11:47.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="This is a module path." start="00:11:54.144" video="mainVideo-haskell" id="subtitle"]] -[[!template text="One can go to any of these results." start="00:11:57.864" video="mainVideo-haskell" id="subtitle"]] -[[!template text="We can search for things in all packages" start="00:12:06.424" video="mainVideo-haskell" id="subtitle"]] -[[!template text="or in the current package." start="00:12:07.944" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let’s say I want to search for "Read"" start="00:12:09.584" video="mainVideo-haskell" id="subtitle"]] -[[!template text="I think this is the "Read" that is commonly used in Haskell," start="00:12:13.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="the read type class for parsing strings into values." start="00:12:19.344" video="mainVideo-haskell" id="subtitle"]] -[[!template text="I think that is more or less it." start="00:12:25.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="That is the Haskell Code Explorer web application" start="00:12:31.104" video="mainVideo-haskell" id="subtitle"]] -[[!template text="in all its glory." start="00:12:34.624" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="Let's go back to the slides." start="00:12:38.304" video="mainVideo-haskell" id="subtitle"]] -[[!template text="That was the web application," start="00:12:40.984" video="mainVideo-haskell" id="subtitle"]] -[[!template text="which is basically a JavaScript client" start="00:12:43.464" video="mainVideo-haskell" id="subtitle"]] -[[!template text="that talks to the server" start="00:12:46.544" video="mainVideo-haskell" id="subtitle"]] -[[!template text="by sending requests and receiving" start="00:12:48.744" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and parsing the JSON results or JSON responses." start="00:12:51.064" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Initially, I was interested in hacking the web client." start="00:12:55.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It uses the ember.js web framework." start="00:13:02.504" video="mainVideo-haskell" id="subtitle"]] -[[!template text="The first thing to do was to npm install ember-cli." start="00:13:05.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It gives me 12 vulnerabilities," start="00:13:09.944" video="mainVideo-haskell" id="subtitle"]] -[[!template text="4 low, 2 moderate, 3 high, 3 critical." start="00:13:16.224" video="mainVideo-haskell" id="subtitle"]] -[[!template text="I don't know how often it is the case" start="00:13:19.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="when we don't really care about these nasty vulnerabilities" start="00:13:26.184" video="mainVideo-haskell" id="subtitle"]] -[[!template text="from Node.js or npm because they are so common." start="00:13:33.064" video="mainVideo-haskell" id="subtitle"]] -[[!template text="I don't quite like that." start="00:13:36.000" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="Another reason for favoring Emacs clients" start="00:13:41.144" video="mainVideo-haskell" id="subtitle"]] -[[!template text="over JavaScript clients is user freedom." start="00:13:45.464" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Emacs is geared towards user freedom." start="00:13:49.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It allows users maximum freedom to customize or mod Emacs." start="00:13:53.384" video="mainVideo-haskell" id="subtitle"]] -[[!template text="I think Emacs clients can be a way to fix JavaScript traps," start="00:14:01.664" video="mainVideo-haskell" id="subtitle"]] -[[!template text="like using user scripts to replace non-free JavaScript." start="00:14:07.264" video="mainVideo-haskell" id="subtitle"]] -[[!template text="There are tools to do that, for example, like Haketilo." start="00:14:14.344" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Why write JavaScript replacement" start="00:14:19.584" video="mainVideo-haskell" id="subtitle"]] -[[!template text="if we can write Elisp replacement?" start="00:14:21.504" video="mainVideo-haskell" id="subtitle"]] -[[!template text="If we overwrite all kinds of front-ends in Emacs" start="00:14:25.264" video="mainVideo-haskell" id="subtitle"]] -[[!template text="for commonly-used web applications" start="00:14:31.784" video="mainVideo-haskell" id="subtitle"]] -[[!template text="like Reddit, Hacker News, what have you," start="00:14:34.504" video="mainVideo-haskell" id="subtitle"]] -[[!template text="then we have an Emacs app store" start="00:14:37.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="where we can just install these applications" start="00:14:40.904" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and browse the web more freely." start="00:14:43.704" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="Back to hcel, which is the Emacs client I wrote." start="00:14:51.184" video="mainVideo-haskell" id="subtitle"]] -[[!template text="I tried to reuse as much of Emacs built-ins as possible," start="00:14:56.144" video="mainVideo-haskell" id="subtitle"]] -[[!template text="including eldoc, for showing documentation," start="00:14:59.184" video="mainVideo-haskell" id="subtitle"]] -[[!template text="xref for cross-referencer," start="00:15:03.144" video="mainVideo-haskell" id="subtitle"]] -[[!template text="compilation-mode for showing search results of identifiers," start="00:15:04.864" video="mainVideo-haskell" id="subtitle"]] -[[!template text="outline-mode for a hierarchical view" start="00:15:07.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="of package module identifiers," start="00:15:11.704" video="mainVideo-haskell" id="subtitle"]] -[[!template text="sort of a cursor-mode for highlighting identifiers," start="00:15:14.384" video="mainVideo-haskell" id="subtitle"]] -[[!template text="help-mode for displaying quick help for Haskell identifiers," start="00:15:18.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="integration with haddorg," start="00:15:26.144" video="mainVideo-haskell" id="subtitle"]] -[[!template text="which I will mention later, etc." start="00:15:27.704" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It is available as hcel without the dot on GNU ELPA." start="00:15:31.304" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Time for a demo." start="00:15:38.000" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="To start using hc.el, surprise surprise," start="00:15:40.184" video="mainVideo-haskell" id="subtitle"]] -[[!template text="we run the hcel command." start="00:15:42.584" video="mainVideo-haskell" id="subtitle"]] -[[!template text="We are presented with a list of packages" start="00:15:45.184" video="mainVideo-haskell" id="subtitle"]] -[[!template text="indexed by the hcel indexer." start="00:15:46.984" video="mainVideo-haskell" id="subtitle"]] -[[!template text="This is an outline mode," start="00:15:52.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="so we can tab to list all the modules" start="00:15:54.064" video="mainVideo-haskell" id="subtitle"]] -[[!template text="represented by the module path." start="00:15:58.824" video="mainVideo-haskell" id="subtitle"]] -[[!template text="We can further tab into the list of identifiers" start="00:16:01.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="declared in this module." start="00:16:03.504" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Now it asks whether you want to open module source." start="00:16:05.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="This is because some module source code" start="00:16:09.184" video="mainVideo-haskell" id="subtitle"]] -[[!template text="can be quite large and it can take a bit of time." start="00:16:11.984" video="mainVideo-haskell" id="subtitle"]] -[[!template text="In this case, the control monad is quite small," start="00:16:14.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="so let's say yes." start="00:16:17.784" video="mainVideo-haskell" id="subtitle"]] -[[!template text="We see the list of identifiers." start="00:16:19.944" video="mainVideo-haskell" id="subtitle"]] -[[!template text="One can jump to an identifier forever." start="00:16:24.104" video="mainVideo-haskell" id="subtitle"]] -[[!template text="As you can see, the identifiers at points are highlighted." start="00:16:28.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="This can be particularly useful" start="00:16:33.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="in a large function declaration" start="00:16:36.224" video="mainVideo-haskell" id="subtitle"]] -[[!template text="where you come to see, for example," start="00:16:38.704" video="mainVideo-haskell" id="subtitle"]] -[[!template text="all the occurrences of an identifier" start="00:16:40.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="inside the body of the declaration." start="00:16:44.304" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="These are declarations" start="00:16:48.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="which in Haskell mode are listed in imenu." start="00:16:50.824" video="mainVideo-haskell" id="subtitle"]] -[[!template text="We can do the same here in hcel source mode." start="00:16:53.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It lists all the declarations with their signature." start="00:17:00.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let's say we want to jump to this funny operator." start="00:17:06.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It worked and you can also go back and forth" start="00:17:13.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="within the declarations by pressing "n" and "p"." start="00:17:20.424" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Similarly, you can do something similar in the outline mode" start="00:17:26.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="by toggling the follow mode, just like in org-agenda." start="00:17:30.904" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let's turn it off." start="00:17:38.000" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="Now, how about find definition references?" start="00:17:40.224" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Using xref," start="00:17:46.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="we can jump to the definition of Int and jump back." start="00:17:49.064" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Jump to Maybe, jump back." start="00:17:53.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let's have a look at references of replicateM." start="00:17:56.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="There are plenty of them." start="00:18:01.024" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Maybe we want to check out ghc-lib." start="00:18:03.464" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Here are all the references" start="00:18:09.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and you can of course jump to any of them in the results." start="00:18:11.344" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Cool." start="00:18:16.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="You may have already noticed" start="00:18:19.000" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="the eldoc displaying the documentation" start="00:18:21.864" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and signature of identifiers." start="00:18:27.184" video="mainVideo-haskell" id="subtitle"]] -[[!template text="For example, here it shows the signature of replicateM," start="00:18:34.904" video="mainVideo-haskell" id="subtitle"]] -[[!template text="where it is defined, and its documentation." start="00:18:44.104" video="mainVideo-haskell" id="subtitle"]] -[[!template text="We can bring up the eldoc buffer." start="00:18:47.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="In the eldoc buffer," start="00:18:56.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="there are also links to other identifiers," start="00:18:58.264" video="mainVideo-haskell" id="subtitle"]] -[[!template text="which takes you to the definition of these identifiers," start="00:19:00.184" video="mainVideo-haskell" id="subtitle"]] -[[!template text="like minBound." start="00:19:04.544" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Apparently, this is not working." start="00:19:07.624" video="mainVideo-haskell" id="subtitle"]] -[[!template text="I'm pretty sure it maybe works." start="00:19:10.864" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let's go to nothing or just..." start="00:19:13.104" video="mainVideo-haskell" id="subtitle"]] -[[!template text="I think those didn't work because" start="00:19:17.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="the module source for those identifiers is not open." start="00:19:19.864" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="Of course, you can search" start="00:19:24.144" video="mainVideo-haskell" id="subtitle"]] -[[!template text="for any identifiers across all indexed packages" start="00:19:30.304" video="mainVideo-haskell" id="subtitle"]] -[[!template text="by invoking hcel-global-ids." start="00:19:33.024" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let's say we want to search for Read." start="00:19:38.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="We are presented with a list of results," start="00:19:42.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="which are identifiers starting with Read with capital R." start="00:19:47.464" video="mainVideo-haskell" id="subtitle"]] -[[!template text="They also show where they are defined" start="00:19:54.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and the documentation, just like in eldoc." start="00:19:57.304" video="mainVideo-haskell" id="subtitle"]] -[[!template text="One can also directly jump to the identifier" start="00:20:07.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="in the mini-buffer results." start="00:20:13.944" video="mainVideo-haskell" id="subtitle"]] -[[!template text="For example, we want to check out this Read2" start="00:20:20.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="defined in base-4.12.0.0 Data.Functor.Classes" start="00:20:22.024" video="mainVideo-haskell" id="subtitle"]] -[[!template text="There we go." start="00:20:28.000" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="Another functionality of hcel" start="00:20:34.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="is the help buffer integration." start="00:20:37.864" video="mainVideo-haskell" id="subtitle"]] -[[!template text="We can do hcel-help and then let's say" start="00:20:41.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="we want to learn about the read type class." start="00:20:46.565" video="mainVideo-haskell" id="subtitle"]] -[[!template text="This is a help buffer" start="00:20:52.744" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and you can jump to other definitions" start="00:20:55.184" video="mainVideo-haskell" id="subtitle"]] -[[!template text="within the help buffer" start="00:21:00.904" video="mainVideo-haskell" id="subtitle"]] -[[!template text="to read the documentation like readsPrec." start="00:21:02.464" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It says Server version cannot be satistifed. Actual version." start="00:21:07.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="This means we need to tell hecl" start="00:21:11.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="that the server has the correct version." start="00:21:14.784" video="mainVideo-haskell" id="subtitle"]] -[[!template text="hecl-fetch-server-version." start="00:21:17.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Wait a bit for it to update" start="00:21:21.744" video="mainVideo-haskell" id="subtitle"]] -[[!template text="the knowledge of the server version." start="00:21:25.704" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Now you can follow the links, Read, readsPrec." start="00:21:27.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="You can do the "l" and "r" to navigate within the history." start="00:21:33.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="ReadS, ReadP." start="00:21:38.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Just like in the help buffer for elisp code," start="00:21:43.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="you can jump to the definition." start="00:21:46.024" video="mainVideo-haskell" id="subtitle"]] -[[!template text="I believe that is everything, more or less." start="00:21:53.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="That concludes the demo." start="00:22:00.000" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="Now let's turn to haddorg," start="00:22:05.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="which is an Org backend for Haddock." start="00:22:07.144" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Haddock is the documentation generator for Haskell packages." start="00:22:09.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="For example," start="00:22:13.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="the official Haskell package documentation website Hackage," start="00:22:15.144" video="mainVideo-haskell" id="subtitle"]] -[[!template text="all the documentation there is generated by Haddock" start="00:22:22.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="into the HTML format." start="00:22:25.904" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Haddock has several backends" start="00:22:28.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="that convert the intermediate representation" start="00:22:31.424" video="mainVideo-haskell" id="subtitle"]] -[[!template text="called interface to various output formats," start="00:22:34.384" video="mainVideo-haskell" id="subtitle"]] -[[!template text="including HTML, LaTeX, and Hugo." start="00:22:37.064" video="mainVideo-haskell" id="subtitle"]] -[[!template text="HTML is the main format with a lot of features." start="00:22:41.864" video="mainVideo-haskell" id="subtitle"]] -[[!template text="LaTeX is less so, and I don't think it is widely used." start="00:22:44.904" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let's have a look at an HTML example." start="00:22:49.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="This is a PDF because these HTML files can be rather large" start="00:22:53.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and slow down EWW significantly." start="00:23:01.184" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It's faster to convert it to PDF" start="00:23:07.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and read it from pdf-tools." start="00:23:10.264" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Looks like this is as big as it goes." start="00:23:17.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="I hope you can still see it." start="00:23:20.864" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Can I still enlarge it a bit more? Maybe." start="00:23:26.144" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="This is Servant.Server." start="00:23:30.144" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It is a module in the servant-server package." start="00:23:33.064" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It is a widely used package for writing servers." start="00:23:36.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It starts with a heading, which is the name of the module," start="00:23:42.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and the table of contents." start="00:23:49.904" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Then a heading: Run an wai application from an API." start="00:23:52.784" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Under this heading, there are all the relevant identifiers" start="00:23:56.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="that is concerned with running a WAI application from API," start="00:24:00.904" video="mainVideo-haskell" id="subtitle"]] -[[!template text="including serve, which is one of the main entry points" start="00:24:08.624" video="mainVideo-haskell" id="subtitle"]] -[[!template text="for a Servant.Server." start="00:24:13.304" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It has a signature linkable to the other identifiers," start="00:24:15.624" video="mainVideo-haskell" id="subtitle"]] -[[!template text="the documentation," start="00:24:21.704" video="mainVideo-haskell" id="subtitle"]] -[[!template text="an example with a Haskell source code block." start="00:24:23.104" video="mainVideo-haskell" id="subtitle"]] -[[!template text="That's what HTML output looks like." start="00:24:26.744" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="As I mentioned," start="00:24:31.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="there are several downsides or drawbacks with that," start="00:24:34.024" video="mainVideo-haskell" id="subtitle"]] -[[!template text="like the HTML files can be huge and slow down EWW." start="00:24:35.904" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Also, every module is an HTML of itself," start="00:24:41.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and there's also an HTML for the package" start="00:24:46.224" video="mainVideo-haskell" id="subtitle"]] -[[!template text="with a list of all the modules." start="00:24:48.384" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Whereas the Org backend" start="00:24:50.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="is better in that it is much more compact." start="00:24:54.744" video="mainVideo-haskell" id="subtitle"]] -[[!template text="All the modules under the same package" start="00:25:04.264" video="mainVideo-haskell" id="subtitle"]] -[[!template text="are included in one Org file" start="00:25:07.504" video="mainVideo-haskell" id="subtitle"]] -[[!template text="as sub-headings, level 2 headings." start="00:25:10.784" video="mainVideo-haskell" id="subtitle"]] -[[!template text="So, servant-server, Servant.Server, that is the module." start="00:25:13.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="So basically, this level 2 heading" start="00:25:19.504" video="mainVideo-haskell" id="subtitle"]] -[[!template text="contains all the information in this PDF." start="00:25:21.944" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Run the WAI application from API, serve." start="00:25:25.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It has a signature that links to other identifiers" start="00:25:29.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and the documentation that's also linkable." start="00:25:39.224" video="mainVideo-haskell" id="subtitle"]] -[[!template text="The Haskell source block is now an Org source block," start="00:25:42.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and you can do all sorts of interesting things" start="00:25:47.224" video="mainVideo-haskell" id="subtitle"]] -[[!template text="with it using org-babel." start="00:25:49.504" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="Let's check the links as server." start="00:25:52.744" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Right, so the link works." start="00:25:56.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Application, right, Request." start="00:26:00.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="It also supports cross-packaging package linking," start="00:26:05.384" video="mainVideo-haskell" id="subtitle"]] -[[!template text="so following the link to request" start="00:26:08.384" video="mainVideo-haskell" id="subtitle"]] -[[!template text="takes us from servant-server package Org documentation" start="00:26:12.304" video="mainVideo-haskell" id="subtitle"]] -[[!template text="to the WAI Org documentation." start="00:26:17.624" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="Another nice thing with Org documentation" start="00:26:24.784" video="mainVideo-haskell" id="subtitle"]] -[[!template text="is that you can use Org functions" start="00:26:27.544" video="mainVideo-haskell" id="subtitle"]] -[[!template text="like org-goto to jump to any identifiers." start="00:26:32.744" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let's say we want to jump to application." start="00:26:40.544" video="mainVideo-haskell" id="subtitle"]] -[[!template text="We have toApplication. So it jumpts to toApplication." start="00:26:45.904" video="mainVideo-haskell" id="subtitle"]] -[[!template text="I guess application is not an identifier," start="00:26:50.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="yes, it is more like a type alias," start="00:26:54.024" video="mainVideo-haskell" id="subtitle"]] -[[!template text="that's why we couldn't find it." start="00:26:55.824" video="mainVideo-haskell" id="subtitle"]] -[[!template text="So that is haddorg." start="00:26:58.664" video="mainVideo-haskell" id="subtitle"]] -[[!template text="And of course, I implemented a bit of integration" start="00:27:01.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="between haddorg and hcel" start="00:27:06.104" video="mainVideo-haskell" id="subtitle"]] -[[!template text="so that we can jump from one to the other." start="00:27:08.544" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let's go back to servant." start="00:27:11.304" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let's see, ServerT." start="00:27:15.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Maybe we want to check out" start="00:27:24.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="the source code definition of ServerT." start="00:27:27.104" video="mainVideo-haskell" id="subtitle"]] -[[!template text="To find out exactly what sort of type alias it is," start="00:27:31.944" video="mainVideo-haskell" id="subtitle"]] -[[!template text="like what is the alias (or type synonym)" start="00:27:36.264" video="mainVideo-haskell" id="subtitle"]] -[[!template text="We run hcel-identifier-at-point--" start="00:27:43.184" video="mainVideo-haskell" id="subtitle"]] -[[!template text="sorry, hcel-haddorg-to-hcel-definition..." start="00:27:49.504" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Oh, we have an HTTP error." start="00:27:52.344" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Typ ServerT not found in module src/Servant/Server.hs" start="00:27:55.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Why? Well, this is because" start="00:27:59.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="the HCEL server only understands," start="00:28:01.125" video="mainVideo-haskell" id="subtitle"]] -[[!template text="it only has knowledge of identifiers" start="00:28:04.944" video="mainVideo-haskell" id="subtitle"]] -[[!template text="that is defined in the original source file." start="00:28:07.824" video="mainVideo-haskell" id="subtitle"]] -[[!template text="So, it is not aware of, say," start="00:28:12.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="identifiers that are re-exported in the module." start="00:28:17.184" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Most likely, Servant.Server module re-exports ServerT" start="00:28:21.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="from another module." start="00:28:25.824" video="mainVideo-haskell" id="subtitle"]] -[[!template text="We will probably have better luck" start="00:28:28.704" video="mainVideo-haskell" id="subtitle"]] -[[!template text="looking into some internal modules like this one." start="00:28:29.744" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let's try this type class HasContextEntry." start="00:28:35.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="So this time it worked." start="00:28:39.000" video="mainVideo-haskell" id="subtitle"]] -[[!template new="1" text="And, of course, we can go the other direction" start="00:28:42.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="from hecl to haddorg." start="00:28:44.344" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Let's say if we want to display named context" start="00:28:48.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="in the haddorg documentation" start="00:28:51.584" video="mainVideo-haskell" id="subtitle"]] -[[!template text="so that we can read about, other identifiers documentation" start="00:28:54.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="that is related to named context." start="00:29:01.624" video="mainVideo-haskell" id="subtitle"]] -[[!template text="We do hecl-identifier-at-point-to-haddorg" start="00:29:04.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="And it does take us to the server-server old file." start="00:29:08.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Okay." start="00:29:14.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="And that concludes my presentation." start="00:29:18.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="You can find hecl in GNU Elpa," start="00:29:21.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and you can also find the source code," start="00:29:23.584" video="mainVideo-haskell" id="subtitle"]] -[[!template text="as well as the source of haddorg" start="00:29:25.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="and instructions on how to generate org documentation" start="00:29:27.464" video="mainVideo-haskell" id="subtitle"]] -[[!template text="using haddorg in my cgit instance." start="00:29:29.864" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Thank you for your attention." start="00:29:33.000" video="mainVideo-haskell" id="subtitle"]] -[[!template text="I hope you enjoy the rest of the conference." start="00:29:36.784" video="mainVideo-haskell" id="subtitle"]] -[[!template text="Thank you." start="00:29:38.000" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""Today, I will talk about Haskell code exploration for Emacs.""" start="00:00:00.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""What is Haskell? It is a purely functional language.""" start="00:00:03.500" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""For example, every value in Haskell is immutable.""" start="00:00:06.500" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""And it is the main compiler of Haskell, GHC.""" start="00:00:09.500" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It provides API for the whole compilation pipeline.""" start="00:00:13.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""For example, the tools mentioned in this talk,""" start="00:00:16.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""including hcel and haddorg,""" start="00:00:18.424" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""they use, they heavily utilize the GHC front-end API""" start="00:00:20.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""for parsing and understanding""" start="00:00:24.500" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""the identifiers in Haskell source files.""" start="00:00:26.744" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Roughly speaking,""" start="00:00:29.500" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""a Haskell program consists of several parts.""" start="00:00:31.544" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""it begins with some front matters, including,""" start="00:00:34.664" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""for example, language extensions,""" start="00:00:37.064" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""which are optional language features one might want to use""" start="00:00:40.024" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""for convenience.""" start="00:00:44.064" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""The front matters also contain module exports.""" start="00:00:48.464" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""So for example, here we define,""" start="00:00:52.500" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""we declare module F2Md.Config""" start="00:00:55.784" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""for this Haskell source file,""" start="00:00:58.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""which exports these four identifiers""" start="00:01:00.984" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""that other source files can use when importing F2Md.Config.""" start="00:01:03.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""And the next will be""" start="00:01:07.500" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""a block of imports so that we can use libraries""" start="00:01:10.784" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and identifiers in these libraries.""" start="00:01:14.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""The bulk of a Haskell source file normally is""" start="00:01:17.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""a list of declarations,""" start="00:01:21.744" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""including values, types, and instances, and so on.""" start="00:01:23.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""The difference between a value and a type is that""" start="00:01:26.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""the type of a value is a type,""" start="00:01:29.184" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and the type of a type is a kind.""" start="00:01:30.500" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""For example, here's a small block of Haskell source code.""" start="00:01:34.064" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""We define Range type""" start="00:01:38.584" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""from a lower-end integer to a higher-end integer.""" start="00:01:41.504" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""We also declare a value r of the type Range,""" start="00:01:45.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""which is Range from 2 to 7,""" start="00:01:51.464" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""because in Haskell, we like to--""" start="00:01:54.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""by default, functions can be curried,""" start="00:02:01.104" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""which basically means, by default, we want to utilize""" start="00:02:04.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""the partial application of functions.""" start="00:02:09.904" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""We don't require parens surrounding arguments""" start="00:02:12.000" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""when invoking a function.""" start="00:02:17.384" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""That makes it possible, if you want,""" start="00:02:19.464" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""to write Haskell like Lisp""" start="00:02:22.725" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""by adding a bit of redundant parens.""" start="00:02:25.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""So for example,""" start="00:02:28.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""here are two blocks of code, one Lisp, one Haskell,""" start="00:02:30.144" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and they look quite similar to each other.""" start="00:02:33.784" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""What is a code explorer?""" start="00:02:36.000" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""A code explorer is a tool""" start="00:02:38.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""to browse its code base to its code comprehension.""" start="00:02:39.544" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Code explorer commonly comes with""" start="00:02:42.724" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""several functionalities or features,""" start="00:02:45.424" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""including a cross-referencer,""" start="00:02:47.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""which allows going to definitions of an identifier at points""" start="00:02:49.344" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""or looking up references of an identifier,""" start="00:02:53.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""like where it is used.""" start="00:02:56.544" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""So the example in Emacs would be xref.""" start="00:02:58.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Code explorer also would be able to show you""" start="00:03:04.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""documentation and signatures of identifiers at points.""" start="00:03:07.704" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""In Emacs, that would be eldoc.""" start="00:03:10.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It also commonly allows you to search for identifiers.""" start="00:03:13.984" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Something like that in Emacs""" start="00:03:17.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""could be describe-function and find-function.""" start="00:03:19.984" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Code explorer is normally""" start="00:03:22.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""quite often implemented in two parts,""" start="00:03:24.784" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""the indexer and the server,""" start="00:03:27.464" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""where the indexer parses the source code files,""" start="00:03:28.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""indexes the identifiers,""" start="00:03:32.584" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and stores the information of identifiers""" start="00:03:34.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""like the definition, size, and the currencies,""" start="00:03:36.384" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""either in databases or in files.""" start="00:03:38.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""The other part is the server,""" start="00:03:42.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""which uses the database created by the indexer""" start="00:03:44.544" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""to serve the information of the identifier.""" start="00:03:49.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Before I present my solution to code exploring,""" start="00:03:53.104" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""some description of prior art is in order.""" start="00:03:57.104" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""There are several tools that you can use""" start="00:04:01.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""to aid code exploration,""" start="00:04:05.384" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""including tech-based tools like hasktags and hs-tags.""" start="00:04:08.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""The limitation with these tools""" start="00:04:13.544" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""is they are focused on the current projects only""" start="00:04:15.584" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and do not work""" start="00:04:18.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""for cross-packaging reference and definition.""" start="00:04:19.704" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Another problem with the tag-based tools is""" start="00:04:26.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""they might not handle symbols with the same name properly.""" start="00:04:31.045" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Sometimes they get confused,""" start="00:04:34.784" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and they ask you to choose which definition,""" start="00:04:36.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""what is the correct definition site,""" start="00:04:43.424" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""even though the occurrence of the symbol""" start="00:04:46.024" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""or the symbol at point has only one definition ambiguously.""" start="00:04:49.344" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Another tool is the haskell-mode.""" start="00:04:55.000" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""It has some limited support for eldoc""" start="00:04:58.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""by displaying the signature of an identifier at points,""" start="00:05:02.784" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""but the identifier has to be something""" start="00:05:06.704" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""that is commonly known or sort of built-in""" start="00:05:11.864" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""or come from the base library of Haskell.""" start="00:05:15.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""So for example,""" start="00:05:18.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""it works for common functions like head and tail.""" start="00:05:20.344" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""And you can see that the signature is displayed here.""" start="00:05:24.344" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""However, it does not work for,""" start="00:05:27.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""let's say, IO. IO is a type.""" start="00:05:29.664" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Maybe that's the reason.""" start="00:05:31.904" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let's find another function""" start="00:05:33.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""that's not from the base library.""" start="00:05:37.424" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""toJSON is from the Aeson library,""" start="00:05:40.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""so no signature is displayed here.""" start="00:05:42.000" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""It also provides""" start="00:05:47.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""some sort of goto-declaration functionality""" start="00:05:51.264" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""to jump to any declaration in a file.""" start="00:05:53.424" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""To do that, one has to first run haskell-decl-scan-mode""" start="00:05:56.424" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""to enter this minor mode.""" start="00:06:00.664" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Then we can run imenu to go to any definition,""" start="00:06:03.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""to go to any declaration, like getHomeR.""" start="00:06:08.144" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Apparently, after running that,""" start="00:06:11.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""we are able to go to definition.""" start="00:06:13.824" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""So for example, let's see,""" start="00:06:16.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""we want to find definition of getCityJR.""" start="00:06:19.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""And indeed, it works""" start="00:06:22.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""if it's within the same source file, of course.""" start="00:06:25.624" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It still does not work for cross-packaging identifiers.""" start="00:06:28.624" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""So HandlerFor is probably an identifier from servant.""" start="00:06:32.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Or no, not necessarily servant. Maybe WAI.""" start="00:06:37.024" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Anyway, it's another library.""" start="00:06:40.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""And how about find-references?""" start="00:06:43.504" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""find-references also works somehow for this file.""" start="00:06:50.504" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""How about WidgetFor?""" start="00:07:01.224" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It works for WidgetFor too.""" start="00:07:06.784" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It has some support for goto-definition and find-references.""" start="00:07:13.744" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""But as usual, it does not support such things cross-package.""" start="00:07:18.000" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""And finally, we have""" start="00:07:26.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""the Sledgehammer HLS Haskell language server.""" start="00:07:27.365" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It can be used with EGLOT.""" start="00:07:31.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""But the problem with HLS, HLS has many many features""" start="00:07:33.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""because it is a language server,""" start="00:07:40.904" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""like renaming, like eldoc for standard libraries, and so on.""" start="00:07:42.944" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""But the problem with HLS is, one, that it is very, very slow.""" start="00:07:51.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""And I wouldn't use it with my laptop.""" start="00:07:57.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""And two, it also does not support cross-package referencing.""" start="00:08:00.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""In fact, there's an outstanding GitHub issue about this.""" start="00:08:05.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""So cross-package referencing and goto-definition""" start="00:08:08.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""is sort of a common shortfall,""" start="00:08:13.064" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""a common problem for these existing Haskell code explorers.""" start="00:08:17.264" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""Then finally, we also have hoogle and hackage.""" start="00:08:21.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Hoogle is a search engine for Haskell identifiers,""" start="00:08:23.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and the results link to Hackage,""" start="00:08:28.384" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""which is the Haskell documentation website""" start="00:08:30.744" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""for all Haskell libraries.""" start="00:08:33.704" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Haskell Hackage has functionality""" start="00:08:35.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""where you can jump to the source code file rendered in HTML,""" start="00:08:40.104" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and you can click on the identifiers there""" start="00:08:45.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""to jump to definitions,""" start="00:08:49.544" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""but it does not support find references,""" start="00:08:51.624" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and it is rather basic.""" start="00:08:54.144" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""Then I learned about haskell-code-explorer,""" start="00:08:59.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""which is a fully-fledged Haskell code explorer.""" start="00:09:01.744" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It is written by someone else.""" start="00:09:05.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It is a web application""" start="00:09:07.824" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""for exploring Haskell package codebases.""" start="00:09:09.264" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""The official reference instance for haskell-code-explorer""" start="00:09:12.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""is available at this URL, which I will demo soon.""" start="00:09:16.344" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""What I did with these packages... I ported it to GHC 9.2.""" start="00:09:19.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""I renamed it to hcel because I want to focus on Emacs clients""" start="00:09:25.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""rather than JavaScript clients, which I will explain later.""" start="00:09:29.144" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""And I also wrote an Emacs client package, of course.""" start="00:09:31.000" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""This is what haskell-code-explorer looks like.""" start="00:09:37.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""On the homepage, it is a list of indexed packages""" start="00:09:41.504" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""indexed by the indexer.""" start="00:09:47.024" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""One can filter it by the package name""" start="00:09:50.144" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""or look for identifiers directly across all packages.""" start="00:09:53.944" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let's have a look at base. There are three versions.""" start="00:10:05.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let's have a look at the latest version, 4.12.0.0.""" start="00:10:09.984" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Once entering the package view,""" start="00:10:15.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""you are shown a list of all modules by their path,""" start="00:10:19.064" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""as well as a tree of these module files.""" start="00:10:24.544" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""You can filter by module name or file name,""" start="00:10:29.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""or you can search for identifier within the same package""" start="00:10:32.624" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""or in all packages.""" start="00:10:34.424" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let's say we want to learn about Control.Monad.""" start="00:10:36.000" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""Now we are in the module view.""" start="00:10:43.304" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""The source file is presented to you,""" start="00:10:46.984" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and it has links to identifiers.""" start="00:10:49.904" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""When you hover over them, the documentation shows up,""" start="00:10:55.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""including the signature where it is defined.""" start="00:11:01.904" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""You can go to its definition or find references.""" start="00:11:05.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let's say we want to go to the definition of Monad.""" start="00:11:10.344" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It jumps to the definition site of the monad type class.""" start="00:11:20.264" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""If we click at the definition site,""" start="00:11:25.584" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""it brings up a list of references.""" start="00:11:28.104" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""On the left, you can choose""" start="00:11:32.224" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""which package you want to find references of monad in.""" start="00:11:33.744" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let's look at the random one, avwx.""" start="00:11:39.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Here is a list of results where Monad is used in avwx.""" start="00:11:47.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""This is a module path.""" start="00:11:54.144" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""One can go to any of these results.""" start="00:11:57.864" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""We can search for things in all packages""" start="00:12:06.424" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""or in the current package.""" start="00:12:07.944" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let’s say I want to search for "Read"""" start="00:12:09.584" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""I think this is the "Read" that is commonly used in Haskell,""" start="00:12:13.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""the read type class for parsing strings into values.""" start="00:12:19.344" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""I think that is more or less it.""" start="00:12:25.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""That is the Haskell Code Explorer web application""" start="00:12:31.104" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""in all its glory.""" start="00:12:34.624" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""Let's go back to the slides.""" start="00:12:38.304" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""That was the web application,""" start="00:12:40.984" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""which is basically a JavaScript client""" start="00:12:43.464" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""that talks to the server""" start="00:12:46.544" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""by sending requests and receiving""" start="00:12:48.744" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and parsing the JSON results or JSON responses.""" start="00:12:51.064" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Initially, I was interested in hacking the web client.""" start="00:12:55.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It uses the ember.js web framework.""" start="00:13:02.504" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""The first thing to do was to npm install ember-cli.""" start="00:13:05.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It gives me 12 vulnerabilities,""" start="00:13:09.944" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""4 low, 2 moderate, 3 high, 3 critical.""" start="00:13:16.224" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""I don't know how often it is the case""" start="00:13:19.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""when we don't really care about these nasty vulnerabilities""" start="00:13:26.184" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""from Node.js or npm because they are so common.""" start="00:13:33.064" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""I don't quite like that.""" start="00:13:36.000" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""Another reason for favoring Emacs clients""" start="00:13:41.144" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""over JavaScript clients is user freedom.""" start="00:13:45.464" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Emacs is geared towards user freedom.""" start="00:13:49.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It allows users maximum freedom to customize or mod Emacs.""" start="00:13:53.384" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""I think Emacs clients can be a way to fix JavaScript traps,""" start="00:14:01.664" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""like using user scripts to replace non-free JavaScript.""" start="00:14:07.264" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""There are tools to do that, for example, like Haketilo.""" start="00:14:14.344" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Why write JavaScript replacement""" start="00:14:19.584" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""if we can write Elisp replacement?""" start="00:14:21.504" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""If we overwrite all kinds of front-ends in Emacs""" start="00:14:25.264" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""for commonly-used web applications""" start="00:14:31.784" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""like Reddit, Hacker News, what have you,""" start="00:14:34.504" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""then we have an Emacs app store""" start="00:14:37.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""where we can just install these applications""" start="00:14:40.904" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and browse the web more freely.""" start="00:14:43.704" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""Back to hcel, which is the Emacs client I wrote.""" start="00:14:51.184" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""I tried to reuse as much of Emacs built-ins as possible,""" start="00:14:56.144" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""including eldoc, for showing documentation,""" start="00:14:59.184" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""xref for cross-referencer,""" start="00:15:03.144" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""compilation-mode for showing search results of identifiers,""" start="00:15:04.864" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""outline-mode for a hierarchical view""" start="00:15:07.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""of package module identifiers,""" start="00:15:11.704" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""sort of a cursor-mode for highlighting identifiers,""" start="00:15:14.384" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""help-mode for displaying quick help for Haskell identifiers,""" start="00:15:18.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""integration with haddorg,""" start="00:15:26.144" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""which I will mention later, etc.""" start="00:15:27.704" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It is available as hcel without the dot on GNU ELPA.""" start="00:15:31.304" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Time for a demo.""" start="00:15:38.000" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""To start using hc.el, surprise surprise,""" start="00:15:40.184" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""we run the hcel command.""" start="00:15:42.584" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""We are presented with a list of packages""" start="00:15:45.184" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""indexed by the hcel indexer.""" start="00:15:46.984" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""This is an outline mode,""" start="00:15:52.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""so we can tab to list all the modules""" start="00:15:54.064" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""represented by the module path.""" start="00:15:58.824" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""We can further tab into the list of identifiers""" start="00:16:01.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""declared in this module.""" start="00:16:03.504" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Now it asks whether you want to open module source.""" start="00:16:05.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""This is because some module source code""" start="00:16:09.184" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""can be quite large and it can take a bit of time.""" start="00:16:11.984" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""In this case, the control monad is quite small,""" start="00:16:14.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""so let's say yes.""" start="00:16:17.784" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""We see the list of identifiers.""" start="00:16:19.944" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""One can jump to an identifier forever.""" start="00:16:24.104" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""As you can see, the identifiers at points are highlighted.""" start="00:16:28.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""This can be particularly useful""" start="00:16:33.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""in a large function declaration""" start="00:16:36.224" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""where you come to see, for example,""" start="00:16:38.704" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""all the occurrences of an identifier""" start="00:16:40.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""inside the body of the declaration.""" start="00:16:44.304" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""These are declarations""" start="00:16:48.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""which in Haskell mode are listed in imenu.""" start="00:16:50.824" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""We can do the same here in hcel source mode.""" start="00:16:53.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It lists all the declarations with their signature.""" start="00:17:00.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let's say we want to jump to this funny operator.""" start="00:17:06.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It worked and you can also go back and forth""" start="00:17:13.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""within the declarations by pressing "n" and "p".""" start="00:17:20.424" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Similarly, you can do something similar in the outline mode""" start="00:17:26.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""by toggling the follow mode, just like in org-agenda.""" start="00:17:30.904" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let's turn it off.""" start="00:17:38.000" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""Now, how about find definition references?""" start="00:17:40.224" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Using xref,""" start="00:17:46.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""we can jump to the definition of Int and jump back.""" start="00:17:49.064" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Jump to Maybe, jump back.""" start="00:17:53.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let's have a look at references of replicateM.""" start="00:17:56.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""There are plenty of them.""" start="00:18:01.024" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Maybe we want to check out ghc-lib.""" start="00:18:03.464" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Here are all the references""" start="00:18:09.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and you can of course jump to any of them in the results.""" start="00:18:11.344" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Cool.""" start="00:18:16.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""You may have already noticed""" start="00:18:19.000" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""the eldoc displaying the documentation""" start="00:18:21.864" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and signature of identifiers.""" start="00:18:27.184" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""For example, here it shows the signature of replicateM,""" start="00:18:34.904" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""where it is defined, and its documentation.""" start="00:18:44.104" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""We can bring up the eldoc buffer.""" start="00:18:47.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""In the eldoc buffer,""" start="00:18:56.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""there are also links to other identifiers,""" start="00:18:58.264" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""which takes you to the definition of these identifiers,""" start="00:19:00.184" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""like minBound.""" start="00:19:04.544" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Apparently, this is not working.""" start="00:19:07.624" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""I'm pretty sure it maybe works.""" start="00:19:10.864" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let's go to nothing or just...""" start="00:19:13.104" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""I think those didn't work because""" start="00:19:17.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""the module source for those identifiers is not open.""" start="00:19:19.864" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""Of course, you can search""" start="00:19:24.144" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""for any identifiers across all indexed packages""" start="00:19:30.304" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""by invoking hcel-global-ids.""" start="00:19:33.024" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let's say we want to search for Read.""" start="00:19:38.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""We are presented with a list of results,""" start="00:19:42.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""which are identifiers starting with Read with capital R.""" start="00:19:47.464" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""They also show where they are defined""" start="00:19:54.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and the documentation, just like in eldoc.""" start="00:19:57.304" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""One can also directly jump to the identifier""" start="00:20:07.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""in the mini-buffer results.""" start="00:20:13.944" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""For example, we want to check out this Read2""" start="00:20:20.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""defined in base-4.12.0.0 Data.Functor.Classes""" start="00:20:22.024" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""There we go.""" start="00:20:28.000" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""Another functionality of hcel""" start="00:20:34.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""is the help buffer integration.""" start="00:20:37.864" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""We can do hcel-help and then let's say""" start="00:20:41.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""we want to learn about the read type class.""" start="00:20:46.565" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""This is a help buffer""" start="00:20:52.744" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and you can jump to other definitions""" start="00:20:55.184" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""within the help buffer""" start="00:21:00.904" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""to read the documentation like readsPrec.""" start="00:21:02.464" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It says Server version cannot be satistifed. Actual version.""" start="00:21:07.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""This means we need to tell hecl""" start="00:21:11.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""that the server has the correct version.""" start="00:21:14.784" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""hecl-fetch-server-version.""" start="00:21:17.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Wait a bit for it to update""" start="00:21:21.744" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""the knowledge of the server version.""" start="00:21:25.704" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Now you can follow the links, Read, readsPrec.""" start="00:21:27.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""You can do the "l" and "r" to navigate within the history.""" start="00:21:33.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""ReadS, ReadP.""" start="00:21:38.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Just like in the help buffer for elisp code,""" start="00:21:43.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""you can jump to the definition.""" start="00:21:46.024" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""I believe that is everything, more or less.""" start="00:21:53.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""That concludes the demo.""" start="00:22:00.000" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""Now let's turn to haddorg,""" start="00:22:05.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""which is an Org backend for Haddock.""" start="00:22:07.144" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Haddock is the documentation generator for Haskell packages.""" start="00:22:09.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""For example,""" start="00:22:13.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""the official Haskell package documentation website Hackage,""" start="00:22:15.144" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""all the documentation there is generated by Haddock""" start="00:22:22.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""into the HTML format.""" start="00:22:25.904" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Haddock has several backends""" start="00:22:28.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""that convert the intermediate representation""" start="00:22:31.424" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""called interface to various output formats,""" start="00:22:34.384" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""including HTML, LaTeX, and Hugo.""" start="00:22:37.064" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""HTML is the main format with a lot of features.""" start="00:22:41.864" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""LaTeX is less so, and I don't think it is widely used.""" start="00:22:44.904" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let's have a look at an HTML example.""" start="00:22:49.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""This is a PDF because these HTML files can be rather large""" start="00:22:53.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and slow down EWW significantly.""" start="00:23:01.184" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It's faster to convert it to PDF""" start="00:23:07.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and read it from pdf-tools.""" start="00:23:10.264" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Looks like this is as big as it goes.""" start="00:23:17.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""I hope you can still see it.""" start="00:23:20.864" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Can I still enlarge it a bit more? Maybe.""" start="00:23:26.144" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""This is Servant.Server.""" start="00:23:30.144" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It is a module in the servant-server package.""" start="00:23:33.064" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It is a widely used package for writing servers.""" start="00:23:36.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It starts with a heading, which is the name of the module,""" start="00:23:42.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and the table of contents.""" start="00:23:49.904" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Then a heading: Run an wai application from an API.""" start="00:23:52.784" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Under this heading, there are all the relevant identifiers""" start="00:23:56.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""that is concerned with running a WAI application from API,""" start="00:24:00.904" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""including serve, which is one of the main entry points""" start="00:24:08.624" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""for a Servant.Server.""" start="00:24:13.304" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It has a signature linkable to the other identifiers,""" start="00:24:15.624" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""the documentation,""" start="00:24:21.704" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""an example with a Haskell source code block.""" start="00:24:23.104" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""That's what HTML output looks like.""" start="00:24:26.744" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""As I mentioned,""" start="00:24:31.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""there are several downsides or drawbacks with that,""" start="00:24:34.024" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""like the HTML files can be huge and slow down EWW.""" start="00:24:35.904" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Also, every module is an HTML of itself,""" start="00:24:41.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and there's also an HTML for the package""" start="00:24:46.224" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""with a list of all the modules.""" start="00:24:48.384" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Whereas the Org backend""" start="00:24:50.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""is better in that it is much more compact.""" start="00:24:54.744" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""All the modules under the same package""" start="00:25:04.264" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""are included in one Org file""" start="00:25:07.504" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""as sub-headings, level 2 headings.""" start="00:25:10.784" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""So, servant-server, Servant.Server, that is the module.""" start="00:25:13.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""So basically, this level 2 heading""" start="00:25:19.504" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""contains all the information in this PDF.""" start="00:25:21.944" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Run the WAI application from API, serve.""" start="00:25:25.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It has a signature that links to other identifiers""" start="00:25:29.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and the documentation that's also linkable.""" start="00:25:39.224" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""The Haskell source block is now an Org source block,""" start="00:25:42.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and you can do all sorts of interesting things""" start="00:25:47.224" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""with it using org-babel.""" start="00:25:49.504" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""Let's check the links as server.""" start="00:25:52.744" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Right, so the link works.""" start="00:25:56.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Application, right, Request.""" start="00:26:00.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""It also supports cross-packaging package linking,""" start="00:26:05.384" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""so following the link to request""" start="00:26:08.384" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""takes us from servant-server package Org documentation""" start="00:26:12.304" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""to the WAI Org documentation.""" start="00:26:17.624" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""Another nice thing with Org documentation""" start="00:26:24.784" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""is that you can use Org functions""" start="00:26:27.544" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""like org-goto to jump to any identifiers.""" start="00:26:32.744" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let's say we want to jump to application.""" start="00:26:40.544" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""We have toApplication. So it jumpts to toApplication.""" start="00:26:45.904" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""I guess application is not an identifier,""" start="00:26:50.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""yes, it is more like a type alias,""" start="00:26:54.024" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""that's why we couldn't find it.""" start="00:26:55.824" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""So that is haddorg.""" start="00:26:58.664" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""And of course, I implemented a bit of integration""" start="00:27:01.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""between haddorg and hcel""" start="00:27:06.104" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""so that we can jump from one to the other.""" start="00:27:08.544" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let's go back to servant.""" start="00:27:11.304" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let's see, ServerT.""" start="00:27:15.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Maybe we want to check out""" start="00:27:24.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""the source code definition of ServerT.""" start="00:27:27.104" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""To find out exactly what sort of type alias it is,""" start="00:27:31.944" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""like what is the alias (or type synonym)""" start="00:27:36.264" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""We run hcel-identifier-at-point--""" start="00:27:43.184" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""sorry, hcel-haddorg-to-hcel-definition...""" start="00:27:49.504" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Oh, we have an HTTP error.""" start="00:27:52.344" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Typ ServerT not found in module src/Servant/Server.hs""" start="00:27:55.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Why? Well, this is because""" start="00:27:59.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""the HCEL server only understands,""" start="00:28:01.125" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""it only has knowledge of identifiers""" start="00:28:04.944" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""that is defined in the original source file.""" start="00:28:07.824" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""So, it is not aware of, say,""" start="00:28:12.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""identifiers that are re-exported in the module.""" start="00:28:17.184" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Most likely, Servant.Server module re-exports ServerT""" start="00:28:21.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""from another module.""" start="00:28:25.824" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""We will probably have better luck""" start="00:28:28.704" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""looking into some internal modules like this one.""" start="00:28:29.744" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let's try this type class HasContextEntry.""" start="00:28:35.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""So this time it worked.""" start="00:28:39.000" video="mainVideo-haskell" id="subtitle"]] +[[!template new="1" text="""And, of course, we can go the other direction""" start="00:28:42.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""from hecl to haddorg.""" start="00:28:44.344" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Let's say if we want to display named context""" start="00:28:48.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""in the haddorg documentation""" start="00:28:51.584" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""so that we can read about, other identifiers documentation""" start="00:28:54.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""that is related to named context.""" start="00:29:01.624" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""We do hecl-identifier-at-point-to-haddorg""" start="00:29:04.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""And it does take us to the server-server old file.""" start="00:29:08.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Okay.""" start="00:29:14.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""And that concludes my presentation.""" start="00:29:18.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""You can find hecl in GNU Elpa,""" start="00:29:21.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and you can also find the source code,""" start="00:29:23.584" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""as well as the source of haddorg""" start="00:29:25.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""and instructions on how to generate org documentation""" start="00:29:27.464" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""using haddorg in my cgit instance.""" start="00:29:29.864" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Thank you for your attention.""" start="00:29:33.000" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""I hope you enjoy the rest of the conference.""" start="00:29:36.784" video="mainVideo-haskell" id="subtitle"]] +[[!template text="""Thank you.""" start="00:29:38.000" video="mainVideo-haskell" id="subtitle"]] + +Captioner: anush Questions or comments? Please e-mail [id@ypei.org](mailto:id@ypei.org?subject=Comment%20for%20EmacsConf%202022%20haskell%3A%20Haskell%20code%20exploration%20with%20Emacs) diff --git a/2022/info/haskell-before.md b/2022/info/haskell-before.md index cb16b253..980890ea 100644 --- a/2022/info/haskell-before.md +++ b/2022/info/haskell-before.md @@ -3,15 +3,15 @@ In this talk, Yuchen Pei demonstrates an Emacs package for exploring Haskell cod The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="haskell"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(578,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect stroke-width="3" x="666" y="75" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect stroke-width="3" x="666" y="75" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] -Format: 30-min talk followed by live Q&A (<https://emacsconf.org/current/haskell/room>) +Format: 30-min talk followed by live Q&A (done) Etherpad: <https://pad.emacsconf.org/2022-haskell> Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Q&A open for participation -<div>Times in different timezones:</div><div class="times" start="2022-12-03T21:05:00Z" end="2022-12-03T21:35:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~4:05 PM - 4:35 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~3:05 PM - 3:35 PM CST (US/Central)<br />Saturday, Dec 3 2022, ~2:05 PM - 2:35 PM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~1:05 PM - 1:35 PM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~9:05 PM - 9:35 PM UTC <br />Saturday, Dec 3 2022, ~10:05 PM - 10:35 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~11:05 PM - 11:35 PM EET (Europe/Athens)<br />Sunday, Dec 4 2022, ~2:35 AM - 3:05 AM IST (Asia/Kolkata)<br />Sunday, Dec 4 2022, ~5:05 AM - 5:35 AM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~6:05 AM - 6:35 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/dev/">Find out how to watch and participate</a></div> +Status: Q&A finished, IRC and pad will be archived on this page + [[!template id="vid" vidid="haskell-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-haskell--haskell-code-exploration-with-emacs--yuchen-pei--main.webm" poster="https://media.emacsconf.org/2022/emacsconf-2022-haskell--haskell-code-exploration-with-emacs--yuchen-pei--main.png" captions="""<track label="English" kind="captions" srclang="en" src="/2022/captions/emacsconf-2022-haskell--haskell-code-exploration-with-emacs--yuchen-pei--main.vtt" default />""" size="50M" duration="29:40" other_resources="""[Download --main.webm (47MB)](https://media.emacsconf.org/2022/emacsconf-2022-haskell--haskell-code-exploration-with-emacs--yuchen-pei--main.webm) diff --git a/2022/info/health-after.md b/2022/info/health-after.md index e0e567dd..02a0cc26 100644 --- a/2022/info/health-after.md +++ b/2022/info/health-after.md @@ -4,416 +4,418 @@ <a name="health-mainVideo-transcript"></a> # Transcript -[[!template new="1" text="Hi, this is Dave O'Toole, and today" start="00:00:00.000" video="mainVideo-health" id="subtitle"]] -[[!template text="I'll be giving a presentation on tracking health data" start="00:00:04.000" video="mainVideo-health" id="subtitle"]] -[[!template text="with Emacs, Org Mode, and gnuplot." start="00:00:07.800" video="mainVideo-health" id="subtitle"]] -[[!template text="So gnuplot is the well-known scientific" start="00:00:12.760" video="mainVideo-health" id="subtitle"]] -[[!template text="and mathematical plotting application." start="00:00:16.080" video="mainVideo-health" id="subtitle"]] -[[!template text="You feed it text files full of names, dates, numbers," start="00:00:19.040" video="mainVideo-health" id="subtitle"]] -[[!template text="data points, and you get out a nice graph." start="00:00:24.640" video="mainVideo-health" id="subtitle"]] -[[!template text="You can spit out SVG. You can spit out PNG graphics." start="00:00:27.200" video="mainVideo-health" id="subtitle"]] -[[!template text="In this case, we're using an SVG." start="00:00:31.120" video="mainVideo-health" id="subtitle"]] -[[!template new="1" text="What I'm going to show you today" start="00:00:33.640" video="mainVideo-health" id="subtitle"]] -[[!template text="is how to take daily health journal items:" start="00:00:36.840" video="mainVideo-health" id="subtitle"]] -[[!template text="in other words, things like I exercised" start="00:00:39.840" video="mainVideo-health" id="subtitle"]] -[[!template text="such and such number of minutes today," start="00:00:42.120" video="mainVideo-health" id="subtitle"]] -[[!template text="I got X hours of sleep last night," start="00:00:44.320" video="mainVideo-health" id="subtitle"]] -[[!template text="I used such and such number of pieces of nicotine gum," start="00:00:47.400" video="mainVideo-health" id="subtitle"]] -[[!template text="say five pieces. So let's see," start="00:00:51.480" video="mainVideo-health" id="subtitle"]] -[[!template text="we've got this whole picture here, all right," start="00:00:54.560" video="mainVideo-health" id="subtitle"]] -[[!template text="and I've tracked here..." start="00:00:58.440" video="mainVideo-health" id="subtitle"]] -[[!template text="This is a month of data from my life." start="00:00:59.360" video="mainVideo-health" id="subtitle"]] -[[!template text="This is... I'm not showing all the variables," start="00:01:02.320" video="mainVideo-health" id="subtitle"]] -[[!template text="but this is what I felt comfortable sharing" start="00:01:05.160" video="mainVideo-health" id="subtitle"]] -[[!template text="in order to help people who might have a need to track," start="00:01:08.520" video="mainVideo-health" id="subtitle"]] -[[!template text="either because of a chronic condition," start="00:01:14.240" video="mainVideo-health" id="subtitle"]] -[[!template text="or just because of a health improvement goal" start="00:01:15.920" video="mainVideo-health" id="subtitle"]] -[[!template text="or what have you, people who might need to" start="00:01:18.600" video="mainVideo-health" id="subtitle"]] -[[!template text="track health data in a way" start="00:01:20.960" video="mainVideo-health" id="subtitle"]] -[[!template text="that's a little bit more robust" start="00:01:23.320" video="mainVideo-health" id="subtitle"]] -[[!template text="than just one or two variables" start="00:01:24.960" video="mainVideo-health" id="subtitle"]] -[[!template text="and just weight or just blood pressure." start="00:01:26.600" video="mainVideo-health" id="subtitle"]] -[[!template text="So in this case, I've got exercise," start="00:01:29.840" video="mainVideo-health" id="subtitle"]] -[[!template text="I've got the number of hours of sleep," start="00:01:33.080" video="mainVideo-health" id="subtitle"]] -[[!template text="the number of doses of nicotine," start="00:01:36.400" video="mainVideo-health" id="subtitle"]] -[[!template text="(that's the yellow line here)," start="00:01:38.560" video="mainVideo-health" id="subtitle"]] -[[!template text="and this is referring to nicotine gum." start="00:01:40.800" video="mainVideo-health" id="subtitle"]] -[[!template text="What we're going to be talking about" start="00:01:44.240" video="mainVideo-health" id="subtitle"]] -[[!template text="is looking at connections, the idea" start="00:01:45.560" video="mainVideo-health" id="subtitle"]] -[[!template text="that plotting your data can actually" start="00:01:47.840" video="mainVideo-health" id="subtitle"]] -[[!template text="help you figure out what's going on." start="00:01:49.880" video="mainVideo-health" id="subtitle"]] -[[!template text="This is just one month." start="00:01:52.120" video="mainVideo-health" id="subtitle"]] -[[!template text="I've been doing this for a couple of months now," start="00:01:53.080" video="mainVideo-health" id="subtitle"]] -[[!template text="but I felt comfortable showing one month" start="00:01:55.440" video="mainVideo-health" id="subtitle"]] -[[!template text="with a limited subset of the variables." start="00:01:57.560" video="mainVideo-health" id="subtitle"]] -[[!template new="1" text="What I'm going to be doing in this presentation" start="00:01:59.440" video="mainVideo-health" id="subtitle"]] -[[!template text="is showing you how to set up your org templates" start="00:02:02.240" video="mainVideo-health" id="subtitle"]] -[[!template text="so that you can, you know, hit a hotkey" start="00:02:05.280" video="mainVideo-health" id="subtitle"]] -[[!template text="to capture today's data with an org template--" start="00:02:08.800" video="mainVideo-health" id="subtitle"]] -[[!template text="or in this case yesterday's. Usually I'm saying, okay," start="00:02:11.840" video="mainVideo-health" id="subtitle"]] -[[!template text="yesterday this happened," start="00:02:14.200" video="mainVideo-health" id="subtitle"]] -[[!template text="because you don't know until the day's over" start="00:02:15.640" video="mainVideo-health" id="subtitle"]] -[[!template text="how many pieces of nicotine gum you ate" start="00:02:17.480" video="mainVideo-health" id="subtitle"]] -[[!template text="or how many hours you slept." start="00:02:19.720" video="mainVideo-health" id="subtitle"]] -[[!template text="So usually we're recording data for the previous day." start="00:02:21.440" video="mainVideo-health" id="subtitle"]] -[[!template text="We can set up a capture template" start="00:02:25.960" video="mainVideo-health" id="subtitle"]] -[[!template text="so that it fills a little org entry. One for exercise," start="00:02:28.080" video="mainVideo-health" id="subtitle"]] -[[!template text="one for sleep, one for nicotine, one for distress." start="00:02:30.920" video="mainVideo-health" id="subtitle"]] -[[!template text="Here distress is just 1 to 10:" start="00:02:34.280" video="mainVideo-health" id="subtitle"]] -[[!template text="how bad do you feel today?" start="00:02:36.920" video="mainVideo-health" id="subtitle"]] -[[!template text="It's not a scientific measure, but you know," start="00:02:38.560" video="mainVideo-health" id="subtitle"]] -[[!template text="many, many things ask you to rate" start="00:02:41.640" video="mainVideo-health" id="subtitle"]] -[[!template text="on a scale of 1 to 10, how bad is the anxiety," start="00:02:43.360" video="mainVideo-health" id="subtitle"]] -[[!template text="how bad is the general level of stress," start="00:02:47.120" video="mainVideo-health" id="subtitle"]] -[[!template text="and so without a lot of complication," start="00:02:49.640" video="mainVideo-health" id="subtitle"]] -[[!template text="I just rate that one to ten." start="00:02:51.680" video="mainVideo-health" id="subtitle"]] -[[!template text="Pain, okay, we won't have to get into any details," start="00:02:53.160" video="mainVideo-health" id="subtitle"]] -[[!template text="but if there is a level of chronic pain, well," start="00:02:58.800" video="mainVideo-health" id="subtitle"]] -[[!template text="I put that between 1 and 10. As we can see here," start="00:03:00.960" video="mainVideo-health" id="subtitle"]] -[[!template text="during the period that I've shown you, it's pretty low." start="00:03:04.240" video="mainVideo-health" id="subtitle"]] -[[!template text="There's some. If you miss a dose of medication," start="00:03:07.320" video="mainVideo-health" id="subtitle"]] -[[!template text="you can track that, in this case" start="00:03:11.920" video="mainVideo-health" id="subtitle"]] -[[!template text="with a big ugly red triangle, you know." start="00:03:13.600" video="mainVideo-health" id="subtitle"]] -[[!template text="You can see, I can see here that in mid-, in late September," start="00:03:17.640" video="mainVideo-health" id="subtitle"]] -[[!template text="sorry, in early to mid-October," start="00:03:24.280" video="mainVideo-health" id="subtitle"]] -[[!template text="I stopped using the nicotine gum" start="00:03:29.200" video="mainVideo-health" id="subtitle"]] -[[!template text="and probably should have cut down more gradually" start="00:03:31.000" video="mainVideo-health" id="subtitle"]] -[[!template text="because my sleep suffered. Look at this." start="00:03:32.960" video="mainVideo-health" id="subtitle"]] -[[!template text="The sleep line is down here, okay?" start="00:03:34.760" video="mainVideo-health" id="subtitle"]] -[[!template new="1" text="What I'm going to do now," start="00:03:38.320" video="mainVideo-health" id="subtitle"]] -[[!template text="now that I've shown you the graph" start="00:03:39.520" video="mainVideo-health" id="subtitle"]] -[[!template text="and some of the things that are useful about it," start="00:03:40.880" video="mainVideo-health" id="subtitle"]] -[[!template text="I'm going to actually take a step back" start="00:03:44.800" video="mainVideo-health" id="subtitle"]] -[[!template text="and show you from start to finish how you can do this" start="00:03:46.640" video="mainVideo-health" id="subtitle"]] -[[!template text="in GNU Emacs, and I have a little template generator" start="00:03:50.320" video="mainVideo-health" id="subtitle"]] -[[!template text="that you can use if you'd like." start="00:03:53.320" video="mainVideo-health" id="subtitle"]] -[[!template text="All right, so let's go back." start="00:03:56.280" video="mainVideo-health" id="subtitle"]] -[[!template text="Let's step back from this file." start="00:03:59.920" video="mainVideo-health" id="subtitle"]] -[[!template text="We're going to split the screen, and on the left side," start="00:04:01.480" video="mainVideo-health" id="subtitle"]] -[[!template text="I'm going to put the underlying Org file" start="00:04:07.600" video="mainVideo-health" id="subtitle"]] -[[!template text="that generates this graph." start="00:04:09.840" video="mainVideo-health" id="subtitle"]] -[[!template text="Let me shrink that a little bit." start="00:04:10.920" video="mainVideo-health" id="subtitle"]] -[[!template new="1" text="All right, I'm going to work my way backwards" start="00:04:16.840" video="mainVideo-health" id="subtitle"]] -[[!template text="from the template to the template generator," start="00:04:22.760" video="mainVideo-health" id="subtitle"]] -[[!template text="meaning that you'll be able to spit out," start="00:04:26.520" video="mainVideo-health" id="subtitle"]] -[[!template text="given your own specification of health variables," start="00:04:28.440" video="mainVideo-health" id="subtitle"]] -[[!template text="you'll be able to have it spit out" start="00:04:31.840" video="mainVideo-health" id="subtitle"]] -[[!template text="a custom gnuplot script like this" start="00:04:33.520" video="mainVideo-health" id="subtitle"]] -[[!template text="that's preset up with the definitions" start="00:04:38.160" video="mainVideo-health" id="subtitle"]] -[[!template text="for the column view in Org mode." start="00:04:41.320" video="mainVideo-health" id="subtitle"]] -[[!template text="I'm assuming a little bit of familiarity" start="00:04:43.160" video="mainVideo-health" id="subtitle"]] -[[!template text="with Org mode and gnuplotting," start="00:04:45.400" video="mainVideo-health" id="subtitle"]] -[[!template text="but I'll try to explain as much as I can as I go along." start="00:04:47.200" video="mainVideo-health" id="subtitle"]] -[[!template new="1" text="The journal here is where... okay, okay, one moment." start="00:04:51.960" video="mainVideo-health" id="subtitle"]] -[[!template text="So as you can see, there's a sub-entry here" start="00:04:59.040" video="mainVideo-health" id="subtitle"]] -[[!template text="for each day that I've included from my data set" start="00:05:03.520" video="mainVideo-health" id="subtitle"]] -[[!template text="starting on September 13th of this year" start="00:05:06.280" video="mainVideo-health" id="subtitle"]] -[[!template text="and ending on October 17th." start="00:05:08.560" video="mainVideo-health" id="subtitle"]] -[[!template text="And there's an Org property drawer with" start="00:05:10.400" video="mainVideo-health" id="subtitle"]] -[[!template text="the corresponding names of each field and the value." start="00:05:16.960" video="mainVideo-health" id="subtitle"]] -[[!template text="Now the idea here is that the columns specify..." start="00:05:29.800" video="mainVideo-health" id="subtitle"]] -[[!template text="if you know a little bit about Org mode," start="00:05:36.760" video="mainVideo-health" id="subtitle"]] -[[!template text="what happens is that you..." start="00:05:40.640" video="mainVideo-health" id="subtitle"]] -[[!template text="let's say that I hit the key for my journal template," start="00:05:43.480" video="mainVideo-health" id="subtitle"]] -[[!template text="which... Mine is very similar." start="00:05:50.920" video="mainVideo-health" id="subtitle"]] -[[!template new="1" text="This is the capture buffer for today's date," start="00:05:52.800" video="mainVideo-health" id="subtitle"]] -[[!template text="and if you're recording yesterday's date," start="00:06:00.880" video="mainVideo-health" id="subtitle"]] -[[!template text="you can just flip it like that if you need to." start="00:06:02.680" video="mainVideo-health" id="subtitle"]] -[[!template text="Then I say, yesterday, I remember" start="00:06:04.520" video="mainVideo-health" id="subtitle"]] -[[!template text="I went for about a one-mile walk," start="00:06:08.640" video="mainVideo-health" id="subtitle"]] -[[!template text="so that's probably about 20 minutes," start="00:06:11.160" video="mainVideo-health" id="subtitle"]] -[[!template text="and that I had such and such," start="00:06:14.120" video="mainVideo-health" id="subtitle"]] -[[!template text="I had eight and a half hours of sleep, let's say." start="00:06:16.520" video="mainVideo-health" id="subtitle"]] -[[!template text="I estimate how many pieces of nicotine gum I have." start="00:06:19.080" video="mainVideo-health" id="subtitle"]] -[[!template text="I try to count as closely as I can, how much distress," start="00:06:22.480" video="mainVideo-health" id="subtitle"]] -[[!template text="you know what I mean," start="00:06:25.800" video="mainVideo-health" id="subtitle"]] -[[!template text="whether or not I missed a dose of medication." start="00:06:26.360" video="mainVideo-health" id="subtitle"]] -[[!template text="Then when you hit C-c C-c," start="00:06:28.280" video="mainVideo-health" id="subtitle"]] -[[!template text="it captures that to the end of your Org file." start="00:06:32.400" video="mainVideo-health" id="subtitle"]] -[[!template text="Now what this shows is that... I cut and paste it in." start="00:06:39.800" video="mainVideo-health" id="subtitle"]] -[[!template text="I've been keeping these entries every day for months," start="00:06:46.680" video="mainVideo-health" id="subtitle"]] -[[!template text="and that I cut and pasted in a month of data." start="00:06:48.160" video="mainVideo-health" id="subtitle"]] -[[!template new="1" text="Now I'm going to dig in a little bit to the gnuplot script." start="00:06:51.320" video="mainVideo-health" id="subtitle"]] -[[!template text="This here, all this stuff, is one component of the graph," start="00:07:00.800" video="mainVideo-health" id="subtitle"]] -[[!template text="and I'll go over how it works." start="00:07:07.760" video="mainVideo-health" id="subtitle"]] -[[!template text="First, the items through this column declaration here," start="00:07:11.360" video="mainVideo-health" id="subtitle"]] -[[!template text="and the id:myid, this columnview table here," start="00:07:19.320" video="mainVideo-health" id="subtitle"]] -[[!template text="#+BEGIN: columnview, this whole bit here," start="00:07:30.200" video="mainVideo-health" id="subtitle"]] -[[!template text="is going to get filled in with the corresponding columns," start="00:07:34.920" video="mainVideo-health" id="subtitle"]] -[[!template text="exercise minutes, sleep hours, nicotine doses." start="00:07:39.880" video="mainVideo-health" id="subtitle"]] -[[!template text="And then it gets pumped out by Org mode into a file" start="00:07:43.040" video="mainVideo-health" id="subtitle"]] -[[!template text="that looks like this: tab-separated values" start="00:07:53.560" video="mainVideo-health" id="subtitle"]] -[[!template text="with an ISO-style date at the beginning." start="00:07:59.841" video="mainVideo-health" id="subtitle"]] -[[!template new="1" text="So what we're going to do is we're going to go through" start="00:08:03.480" video="mainVideo-health" id="subtitle"]] -[[!template text="the gnuplot portion of this," start="00:08:10.360" video="mainVideo-health" id="subtitle"]] -[[!template text="and I'm going to enlarge the font a little." start="00:08:14.480" video="mainVideo-health" id="subtitle"]] -[[!template text="I'm going to go line by line through the gnuplot portion." start="00:08:21.280" video="mainVideo-health" id="subtitle"]] -[[!template text="Now, my template generator will give you one like this." start="00:08:23.720" video="mainVideo-health" id="subtitle"]] -[[!template text="You don't have to write this from scratch." start="00:08:30.640" video="mainVideo-health" id="subtitle"]] -[[!template text="But I'm going to go through it line by line" start="00:08:33.120" video="mainVideo-health" id="subtitle"]] -[[!template text="because if you do use the template," start="00:08:35.680" video="mainVideo-health" id="subtitle"]] -[[!template text="then it'll help to have gone through it line by line," start="00:08:37.480" video="mainVideo-health" id="subtitle"]] -[[!template text="because you're probably going to have to modify it." start="00:08:42.200" video="mainVideo-health" id="subtitle"]] -[[!template text="So first, we're going to clear the graphics" start="00:08:46.680" video="mainVideo-health" id="subtitle"]] -[[!template text="from any previous runs" start="00:08:49.120" video="mainVideo-health" id="subtitle"]] -[[!template text="so that if we reuse the same gnuplot process," start="00:08:50.200" video="mainVideo-health" id="subtitle"]] -[[!template text="we're not overwriting the old--" start="00:08:53.800" video="mainVideo-health" id="subtitle"]] -[[!template text="that we are completely overwriting the old image." start="00:08:57.760" video="mainVideo-health" id="subtitle"]] -[[!template text="So that's the purpose of this line here." start="00:09:00.720" video="mainVideo-health" id="subtitle"]] -[[!template new="1" text="The output parameters: we want to put out an SVG file." start="00:09:03.320" video="mainVideo-health" id="subtitle"]] -[[!template text="Font Arial, that's funny," start="00:09:08.560" video="mainVideo-health" id="subtitle"]] -[[!template text="but I don't know what font it's actually ending up choosing," start="00:09:13.640" video="mainVideo-health" id="subtitle"]] -[[!template text="but it looks fine." start="00:09:16.120" video="mainVideo-health" id="subtitle"]] -[[!template text="Then we want it to be square," start="00:09:16.880" video="mainVideo-health" id="subtitle"]] -[[!template text="so I'm giving it 900 by 900 pixels," start="00:09:19.640" video="mainVideo-health" id="subtitle"]] -[[!template text="even though it is a scalable vector graphic." start="00:09:21.920" video="mainVideo-health" id="subtitle"]] -[[!template text="We're putting it in the same folder as the org file," start="00:09:23.720" video="mainVideo-health" id="subtitle"]] -[[!template text="example.svg." start="00:09:29.160" video="mainVideo-health" id="subtitle"]] -[[!template text="These lines here set it up to use the Org mode format" start="00:09:30.800" video="mainVideo-health" id="subtitle"]] -[[!template text="that we showed in the other file over here." start="00:09:39.520" video="mainVideo-health" id="subtitle"]] -[[!template text="The time format is four-digit year, two-digit month," start="00:09:42.680" video="mainVideo-health" id="subtitle"]] -[[!template text="two-digit day." start="00:09:48.360" video="mainVideo-health" id="subtitle"]] -[[!template text="The time format doesn't specify here the time," start="00:09:50.360" video="mainVideo-health" id="subtitle"]] -[[!template text="but that doesn't seem to mess it up." start="00:09:56.480" video="mainVideo-health" id="subtitle"]] -[[!template text="This line "set datafile separator" means that" start="00:09:59.600" video="mainVideo-health" id="subtitle"]] -[[!template text="the separators between that" start="00:10:02.440" video="mainVideo-health" id="subtitle"]] -[[!template text="and between all the other fields are tabs," start="00:10:04.240" video="mainVideo-health" id="subtitle"]] -[[!template text="which is what Org mode does" start="00:10:06.960" video="mainVideo-health" id="subtitle"]] -[[!template text="when it spits out a table by default." start="00:10:08.920" video="mainVideo-health" id="subtitle"]] -[[!template text="Okay, along to the next lines." start="00:10:11.000" video="mainVideo-health" id="subtitle"]] -[[!template new="1" text="We're going to set up for time series data," start="00:10:15.480" video="mainVideo-health" id="subtitle"]] -[[!template text="meaning that the x-axis is going to be time," start="00:10:18.120" video="mainVideo-health" id="subtitle"]] -[[!template text="x2tics 1 format." start="00:10:22.808" video="mainVideo-health" id="subtitle"]] -[[!template text="I believe this means that every day has one tick" start="00:10:26.120" video="mainVideo-health" id="subtitle"]] -[[!template text="and that this tells it that the first--" start="00:10:30.400" video="mainVideo-health" id="subtitle"]] -[[!template text="unfortunately, I forget the exact meaning of this one line." start="00:10:32.880" video="mainVideo-health" id="subtitle"]] -[[!template text="I'm just going to move on. We want one X tick per day," start="00:10:39.360" video="mainVideo-health" id="subtitle"]] -[[!template text="and because X is in seconds," start="00:10:44.960" video="mainVideo-health" id="subtitle"]] -[[!template text="it's 24 hours times 60 minutes times 60 seconds." start="00:10:46.520" video="mainVideo-health" id="subtitle"]] -[[!template text="This line "set grid xtics" gives us" start="00:10:50.320" video="mainVideo-health" id="subtitle"]] -[[!template text="a vertical line on each day of the graph." start="00:10:55.640" video="mainVideo-health" id="subtitle"]] -[[!template text="I'll pull up the graph" start="00:10:57.280" video="mainVideo-health" id="subtitle"]] -[[!template text="just so that it's a little easier to see." start="00:10:58.320" video="mainVideo-health" id="subtitle"]] -[[!template text="All these vertical lines, one on each day," start="00:11:00.040" video="mainVideo-health" id="subtitle"]] -[[!template text="that's given to you by "set grid xtics"." start="00:11:03.920" video="mainVideo-health" id="subtitle"]] -[[!template text="One Y tick every five points." start="00:11:06.200" video="mainVideo-health" id="subtitle"]] -[[!template text="So here at five pieces of nicotine," start="00:11:10.160" video="mainVideo-health" id="subtitle"]] -[[!template text="we've got a five, at ten pieces – well," start="00:11:13.720" video="mainVideo-health" id="subtitle"]] -[[!template text="we don't want to eat ten pieces, but ten, fifteen, twenty." start="00:11:15.960" video="mainVideo-health" id="subtitle"]] -[[!template text="Rotating the labels to make them fit a little bit better," start="00:11:19.680" video="mainVideo-health" id="subtitle"]] -[[!template text="that's this part here where the labels are sideways," start="00:11:25.480" video="mainVideo-health" id="subtitle"]] -[[!template text="and even with just one month of data," start="00:11:28.040" video="mainVideo-health" id="subtitle"]] -[[!template text="they're getting a little crowded." start="00:11:30.640" video="mainVideo-health" id="subtitle"]] -[[!template text="This "set key box lc" just makes the line around the key," start="00:11:35.160" video="mainVideo-health" id="subtitle"]] -[[!template text="the legend here, a little bit less severe." start="00:11:41.400" video="mainVideo-health" id="subtitle"]] -[[!template text="set xtics format: this makes it so that, for example," start="00:11:44.040" video="mainVideo-health" id="subtitle"]] -[[!template text="I've done a United-States-style date here" start="00:11:51.080" video="mainVideo-health" id="subtitle"]] -[[!template text="with the month and then the day." start="00:11:53.480" video="mainVideo-health" id="subtitle"]] -[[!template text="You don't necessarily have to do that." start="00:11:55.280" video="mainVideo-health" id="subtitle"]] -[[!template text="You can have whatever you want." start="00:11:58.840" video="mainVideo-health" id="subtitle"]] -[[!template text="This xtics format," start="00:12:01.960" video="mainVideo-health" id="subtitle"]] -[[!template text="that relates to how the dates are printed." start="00:12:03.080" video="mainVideo-health" id="subtitle"]] -[[!template text="Remember that over here, this set timefmt," start="00:12:06.320" video="mainVideo-health" id="subtitle"]] -[[!template text="that relates to how the dates are formatted" start="00:12:12.520" video="mainVideo-health" id="subtitle"]] -[[!template text="in the Org mode output." start="00:12:15.160" video="mainVideo-health" id="subtitle"]] -[[!template text="So remember, those are two..." start="00:12:17.000" video="mainVideo-health" id="subtitle"]] -[[!template text="You don't want to mix those up." start="00:12:18.320" video="mainVideo-health" id="subtitle"]] -[[!template text="All right, "yrange [0:40]"." start="00:12:19.520" video="mainVideo-health" id="subtitle"]] -[[!template text="Thus far, my exercise sessions have all been" start="00:12:23.800" video="mainVideo-health" id="subtitle"]] -[[!template text="less than 30 minutes, and nothing's gone over 30." start="00:12:28.720" video="mainVideo-health" id="subtitle"]] -[[!template text="If you have a health variable" start="00:12:31.480" video="mainVideo-health" id="subtitle"]] -[[!template text="that is in a significantly different range," start="00:12:35.840" video="mainVideo-health" id="subtitle"]] -[[!template text="you may need to get a slightly more complicated" start="00:12:38.120" video="mainVideo-health" id="subtitle"]] -[[!template text="gnuplot script because it is possible to plot" start="00:12:41.640" video="mainVideo-health" id="subtitle"]] -[[!template text="multiple yranges in one plot" start="00:12:43.720" video="mainVideo-health" id="subtitle"]] -[[!template text="if you have a variable that uses a different range." start="00:12:46.480" video="mainVideo-health" id="subtitle"]] -[[!template text="It's just a little trickier." start="00:12:48.720" video="mainVideo-health" id="subtitle"]] -[[!template text="These parts here, aside from the fact" start="00:12:49.760" video="mainVideo-health" id="subtitle"]] -[[!template text="that you might make some changes that relate to" start="00:12:55.920" video="mainVideo-health" id="subtitle"]] -[[!template text="the date and your country format," start="00:12:59.080" video="mainVideo-health" id="subtitle"]] -[[!template text="are going to be the same." start="00:13:01.320" video="mainVideo-health" id="subtitle"]] -[[!template text="This is like boilerplate for almost anything." start="00:13:03.240" video="mainVideo-health" id="subtitle"]] -[[!template new="1" text="Now here are the parts that are going to vary" start="00:13:05.920" video="mainVideo-health" id="subtitle"]] -[[!template text="depending on what health variables you want to store." start="00:13:09.800" video="mainVideo-health" id="subtitle"]] -[[!template text="There are three main sections here." start="00:13:13.400" video="mainVideo-health" id="subtitle"]] -[[!template text="One is setting the different line types that are used." start="00:13:18.040" video="mainVideo-health" id="subtitle"]] -[[!template text="Setting linetype 1 with line width 2, line color RGB." start="00:13:28.720" video="mainVideo-health" id="subtitle"]] -[[!template text="Unfortunately, gnuplot is a little bit cryptic," start="00:13:32.480" video="mainVideo-health" id="subtitle"]] -[[!template text="which is why I've made this template generator" start="00:13:34.960" video="mainVideo-health" id="subtitle"]] -[[!template text="that I'll show you in a moment." start="00:13:36.880" video="mainVideo-health" id="subtitle"]] -[[!template text="I pick a color. So this is exercise, forest green." start="00:13:38.000" video="mainVideo-health" id="subtitle"]] -[[!template text="Point size 1, meaning you get" start="00:13:43.040" video="mainVideo-health" id="subtitle"]] -[[!template text="these little green triangles about that size." start="00:13:49.280" video="mainVideo-health" id="subtitle"]] -[[!template text="But the point type 9 is the pointing up triangle." start="00:13:51.600" video="mainVideo-health" id="subtitle"]] -[[!template text="Line type 2, purple. So that's the sleep line." start="00:13:54.720" video="mainVideo-health" id="subtitle"]] -[[!template text="So we're just establishing these different line types" start="00:13:59.520" video="mainVideo-health" id="subtitle"]] -[[!template text="that we've given arbitrary numbers." start="00:14:03.000" video="mainVideo-health" id="subtitle"]] -[[!template text="Now onto the next section." start="00:14:04.720" video="mainVideo-health" id="subtitle"]] -[[!template text="Oh, before I move on here," start="00:14:08.960" video="mainVideo-health" id="subtitle"]] -[[!template text="you can see point type 11 for line 5, which is red." start="00:14:12.920" video="mainVideo-health" id="subtitle"]] -[[!template text="And that's the missed medications line," start="00:14:16.120" video="mainVideo-health" id="subtitle"]] -[[!template text="so you get a triangle that's upside down" start="00:14:18.080" video="mainVideo-health" id="subtitle"]] -[[!template text="because that's point shape 11." start="00:14:20.640" video="mainVideo-health" id="subtitle"]] -[[!template new="1" text="All right. The next section here is the goal lines." start="00:14:22.680" video="mainVideo-health" id="subtitle"]] -[[!template text="There are horizontal dashed lines here" start="00:14:27.880" video="mainVideo-health" id="subtitle"]] -[[!template text="at 8 purple hours of sleep, because 8 hours is the goal." start="00:14:33.441" video="mainVideo-health" id="subtitle"]] -[[!template text="So there's a horizontal line at Y = 8." start="00:14:37.360" video="mainVideo-health" id="subtitle"]] -[[!template text="For pieces of nicotine gum," start="00:14:41.520" video="mainVideo-health" id="subtitle"]] -[[!template text="I'm trying to keep it to around 5 right now." start="00:14:43.880" video="mainVideo-health" id="subtitle"]] -[[!template text="So my goal line is at 5. So these..." start="00:14:46.960" video="mainVideo-health" id="subtitle"]] -[[!template text="Here, a goal of at least 20 minutes of exercise." start="00:14:52.520" video="mainVideo-health" id="subtitle"]] -[[!template text="Sometimes I get more, sometimes I get less." start="00:14:56.760" video="mainVideo-health" id="subtitle"]] -[[!template text="There's a green line and a 20, showing that that's the goal." start="00:14:59.080" video="mainVideo-health" id="subtitle"]] -[[!template text="These lines here are actually the goal lines." start="00:15:02.200" video="mainVideo-health" id="subtitle"]] -[[!template text="You can specify the goal for each one" start="00:15:06.480" video="mainVideo-health" id="subtitle"]] -[[!template text="in the template generator that I'll show you." start="00:15:09.120" video="mainVideo-health" id="subtitle"]] -[[!template new="1" text="The last part is the actual plot command." start="00:15:12.000" video="mainVideo-health" id="subtitle"]] -[[!template text="So the dependent... So okay," start="00:15:28.080" video="mainVideo-health" id="subtitle"]] -[[!template text="these all start with 1, "using 1" against this variable." start="00:15:30.200" video="mainVideo-health" id="subtitle"]] -[[!template text="So $2... This is a ternary operator here" start="00:15:34.920" video="mainVideo-health" id="subtitle"]] -[[!template text="that says if the value of the second column is zero," start="00:15:41.600" video="mainVideo-health" id="subtitle"]] -[[!template text="then don't plot a point. In other words," start="00:15:49.200" video="mainVideo-health" id="subtitle"]] -[[!template text="not a number means it won't plot a point." start="00:15:52.360" video="mainVideo-health" id="subtitle"]] -[[!template text="The template generator lets you skip over" start="00:15:56.080" video="mainVideo-health" id="subtitle"]] -[[!template text="the details of that. It sticks this in there." start="00:15:58.920" video="mainVideo-health" id="subtitle"]] -[[!template text="I'll show you." start="00:16:02.120" video="mainVideo-health" id="subtitle"]] -[[!template text="So we only want to plot a point when the value is non-zero." start="00:16:02.760" video="mainVideo-health" id="subtitle"]] -[[!template text="If there was no exercise, we're not plotting a point." start="00:16:09.400" video="mainVideo-health" id="subtitle"]] -[[!template text="The with construct means we'll plot data" start="00:16:12.480" video="mainVideo-health" id="subtitle"]] -[[!template text="using date against exercise with points," start="00:16:15.760" video="mainVideo-health" id="subtitle"]] -[[!template text="the title is "exercise (minutes)", line type 1." start="00:16:21.341" video="mainVideo-health" id="subtitle"]] -[[!template text="Remember, we established line type 1 up here" start="00:16:25.520" video="mainVideo-health" id="subtitle"]] -[[!template text="as being forest green, point style 1," start="00:16:29.840" video="mainVideo-health" id="subtitle"]] -[[!template text="point type 9, green triangles." start="00:16:35.080" video="mainVideo-health" id="subtitle"]] -[[!template text="Now I'm going to show 1 against column 3," start="00:16:37.600" video="mainVideo-health" id="subtitle"]] -[[!template text="which is "hours of sleep"." start="00:16:42.400" video="mainVideo-health" id="subtitle"]] -[[!template text="This one is plotted with lines," start="00:16:43.920" video="mainVideo-health" id="subtitle"]] -[[!template text="so we don't specify a point type or point size," start="00:16:46.040" video="mainVideo-health" id="subtitle"]] -[[!template text="just a line type 2. And remember, you can see" start="00:16:48.600" video="mainVideo-health" id="subtitle"]] -[[!template text="that line type 2 is defined as purple" start="00:16:51.720" video="mainVideo-health" id="subtitle"]] -[[!template text="with point type 1, point size 1." start="00:16:55.241" video="mainVideo-health" id="subtitle"]] -[[!template text="Okay, so I did specify point size and point type," start="00:16:57.360" video="mainVideo-health" id="subtitle"]] -[[!template text="but because I'm not plotting with points," start="00:16:59.960" video="mainVideo-health" id="subtitle"]] -[[!template text="those are ignored." start="00:17:01.480" video="mainVideo-health" id="subtitle"]] -[[!template text="Here we come to the line with nicotine." start="00:17:02.280" video="mainVideo-health" id="subtitle"]] -[[!template text="The fourth column is the nicotine number," start="00:17:08.800" video="mainVideo-health" id="subtitle"]] -[[!template text="the fourth column from the Org mode file." start="00:17:11.560" video="mainVideo-health" id="subtitle"]] -[[!template text="So here you can see how we're telling gnuplot" start="00:17:13.200" video="mainVideo-health" id="subtitle"]] -[[!template text="to take each column of the tab-separated Org mode file" start="00:17:16.008" video="mainVideo-health" id="subtitle"]] -[[!template text="and put it into the graph." start="00:17:19.800" video="mainVideo-health" id="subtitle"]] -[[!template text="The line types are set up here." start="00:17:21.120" video="mainVideo-health" id="subtitle"]] -[[!template text="The goal lines are set up here." start="00:17:25.960" video="mainVideo-health" id="subtitle"]] -[[!template text="And then the actual plot command is set up here." start="00:17:30.800" video="mainVideo-health" id="subtitle"]] -[[!template new="1" text="So now we're going to work further backwards" start="00:17:35.560" video="mainVideo-health" id="subtitle"]] -[[!template text="from this gnuplot template" start="00:17:41.320" video="mainVideo-health" id="subtitle"]] -[[!template text="to the template generator that I used to make it." start="00:17:42.960" video="mainVideo-health" id="subtitle"]] -[[!template text="Now I'm not going to go into" start="00:17:46.560" video="mainVideo-health" id="subtitle"]] -[[!template text="all of the details of the code," start="00:18:01.960" video="mainVideo-health" id="subtitle"]] -[[!template text="but what I am going to show you is that" start="00:18:03.760" video="mainVideo-health" id="subtitle"]] -[[!template text="there's a variable called `health-factors'." start="00:18:06.160" video="mainVideo-health" id="subtitle"]] -[[!template text="And what this does, this `health-factors-from-list'" start="00:18:10.680" video="mainVideo-health" id="subtitle"]] -[[!template text="lets you specify, with a property list" start="00:18:15.840" video="mainVideo-health" id="subtitle"]] -[[!template text="of keyword and value pairs" start="00:18:20.920" video="mainVideo-health" id="subtitle"]] -[[!template text="(here's the keyword name and the value is exercise)," start="00:18:22.680" video="mainVideo-health" id="subtitle"]] -[[!template text="the goal that I want 20 minutes of exercise," start="00:18:24.800" video="mainVideo-health" id="subtitle"]] -[[!template text="that the unit is minutes," start="00:18:28.200" video="mainVideo-health" id="subtitle"]] -[[!template text="that the color is forest green, and so on." start="00:18:30.200" video="mainVideo-health" id="subtitle"]] -[[!template text="The aspects of the gnuplot setup" start="00:18:36.160" video="mainVideo-health" id="subtitle"]] -[[!template text="have been abstracted here." start="00:18:39.440" video="mainVideo-health" id="subtitle"]] -[[!template text="Eight hours of sleep is the goal here." start="00:18:43.560" video="mainVideo-health" id="subtitle"]] -[[!template text="The hours are units. What color," start="00:18:49.280" video="mainVideo-health" id="subtitle"]] -[[!template text="what thickness of the line." start="00:18:54.040" video="mainVideo-health" id="subtitle"]] -[[!template text="Here we specify the number of points." start="00:18:55.120" video="mainVideo-health" id="subtitle"]] -[[!template text="There's references online" start="00:19:00.080" video="mainVideo-health" id="subtitle"]] -[[!template text="that show you what point types are what shapes in gnuplot," start="00:19:01.280" video="mainVideo-health" id="subtitle"]] -[[!template text="and so on and so forth." start="00:19:05.200" video="mainVideo-health" id="subtitle"]] -[[!template new="1" text="I'll walk through the code a little bit that does this," start="00:19:11.480" video="mainVideo-health" id="subtitle"]] -[[!template text="that actually takes these pieces," start="00:19:17.400" video="mainVideo-health" id="subtitle"]] -[[!template text="that takes this specification of what your variables are" start="00:19:20.440" video="mainVideo-health" id="subtitle"]] -[[!template text="and turns it into a template." start="00:19:24.400" video="mainVideo-health" id="subtitle"]] -[[!template text="First, I'm using EIEIO," start="00:19:30.440" video="mainVideo-health" id="subtitle"]] -[[!template text="the object system that's included with GNU Emacs." start="00:19:37.960" video="mainVideo-health" id="subtitle"]] -[[!template text="It's a reasonable facsimile" start="00:19:41.720" video="mainVideo-health" id="subtitle"]] -[[!template text="of the Common Lisp Object System." start="00:19:45.120" video="mainVideo-health" id="subtitle"]] -[[!template text="What I'm going to be doing here" start="00:19:47.320" video="mainVideo-health" id="subtitle"]] -[[!template text="is defining a class with each of those items," start="00:19:51.240" video="mainVideo-health" id="subtitle"]] -[[!template text="those properties that we talked about in that list" start="00:19:56.200" video="mainVideo-health" id="subtitle"]] -[[!template text="that lets you specify name, what the goal is," start="00:19:58.480" video="mainVideo-health" id="subtitle"]] -[[!template text="what the units are, and the gnuplot things" start="00:20:01.320" video="mainVideo-health" id="subtitle"]] -[[!template text="(the gnuplot parameters like thickness," start="00:20:04.240" video="mainVideo-health" id="subtitle"]] -[[!template text="plot type, and all that) into a class that will then" start="00:20:06.560" video="mainVideo-health" id="subtitle"]] -[[!template text="spit out the template once you feed it" start="00:20:13.240" video="mainVideo-health" id="subtitle"]] -[[!template text="some of these health factor objects. So just a moment." start="00:20:16.520" video="mainVideo-health" id="subtitle"]] -[[!template text="For example, you can see that this template" start="00:20:27.760" video="mainVideo-health" id="subtitle"]] -[[!template text="originally came from being generated by this code here." start="00:20:34.480" video="mainVideo-health" id="subtitle"]] -[[!template text="To use the template," start="00:20:46.320" video="mainVideo-health" id="subtitle"]] -[[!template text="to use this little template generator..." start="00:20:52.960" video="mainVideo-health" id="subtitle"]] -[[!template text="See, here's where it spits out the line type" start="00:20:55.400" video="mainVideo-health" id="subtitle"]] -[[!template text="given the pieces." start="00:21:06.280" video="mainVideo-health" id="subtitle"]] -[[!template text="This is all just text formatting." start="00:21:07.440" video="mainVideo-health" id="subtitle"]] -[[!template text="This is one of the things that Emacs Lisp" start="00:21:09.680" video="mainVideo-health" id="subtitle"]] -[[!template text="just really excels at." start="00:21:11.320" video="mainVideo-health" id="subtitle"]] -[[!template text="I need to take a piece of data" start="00:21:13.160" video="mainVideo-health" id="subtitle"]] -[[!template text="like a list of health information," start="00:21:19.520" video="mainVideo-health" id="subtitle"]] -[[!template text="a list of health variables, what their units are," start="00:21:22.640" video="mainVideo-health" id="subtitle"]] -[[!template text="and how they're supposed to be formatted in gnuplot," start="00:21:25.680" video="mainVideo-health" id="subtitle"]] -[[!template text="and go from that to the nice template." start="00:21:28.120" video="mainVideo-health" id="subtitle"]] -[[!template text="So that's pretty much the whole thing." start="00:21:30.200" video="mainVideo-health" id="subtitle"]] -[[!template text="I want to see if there's anything I missed." start="00:21:31.720" video="mainVideo-health" id="subtitle"]] -[[!template new="1" text="Bring up the chart." start="00:21:41.000" video="mainVideo-health" id="subtitle"]] -[[!template text="This has been really useful" start="00:21:51.520" video="mainVideo-health" id="subtitle"]] -[[!template text="for communicating with healthcare professionals" start="00:21:54.280" video="mainVideo-health" id="subtitle"]] -[[!template text="because you are both on the same page" start="00:21:59.600" video="mainVideo-health" id="subtitle"]] -[[!template text="about exactly what is happening," start="00:22:04.400" video="mainVideo-health" id="subtitle"]] -[[!template text="what's been happening because if... Let's say" start="00:22:05.880" video="mainVideo-health" id="subtitle"]] -[[!template text="that you're tired when you talk to your care provider." start="00:22:10.680" video="mainVideo-health" id="subtitle"]] -[[!template text="Well, if you have objective information" start="00:22:15.240" video="mainVideo-health" id="subtitle"]] -[[!template text="that you've been recording every day," start="00:22:17.560" video="mainVideo-health" id="subtitle"]] -[[!template text="that you're ahead of the game, really," start="00:22:18.840" video="mainVideo-health" id="subtitle"]] -[[!template text="because you don't need, necessarily, the presence of mind" start="00:22:22.400" video="mainVideo-health" id="subtitle"]] -[[!template text="to be able to give your care provider" start="00:22:25.120" video="mainVideo-health" id="subtitle"]] -[[!template text="a complete picture of what's going on in your world." start="00:22:27.680" video="mainVideo-health" id="subtitle"]] -[[!template text="If you can find those few minutes a day to enter--" start="00:22:30.040" video="mainVideo-health" id="subtitle"]] -[[!template text="not even a few minutes," start="00:22:33.040" video="mainVideo-health" id="subtitle"]] -[[!template text="really just a minute to enter the data" start="00:22:34.400" video="mainVideo-health" id="subtitle"]] -[[!template text="and say what happened yesterday..." start="00:22:37.760" video="mainVideo-health" id="subtitle"]] -[[!template text="I'm finding over these months" start="00:22:39.840" video="mainVideo-health" id="subtitle"]] -[[!template text="that I've been more in touch with my health when I can--" start="00:22:42.760" video="mainVideo-health" id="subtitle"]] -[[!template text="not forced, but when I have the habit," start="00:22:45.040" video="mainVideo-health" id="subtitle"]] -[[!template text="the consistent habit every single day" start="00:22:49.920" video="mainVideo-health" id="subtitle"]] -[[!template text="of recording that data--I'm accountable to myself." start="00:22:52.160" video="mainVideo-health" id="subtitle"]] -[[!template text="It's interesting." start="00:22:55.840" video="mainVideo-health" id="subtitle"]] -[[!template text="I guess it gets into a little bit of ideas" start="00:22:57.360" video="mainVideo-health" id="subtitle"]] -[[!template text="about the Quantified Self" start="00:23:01.040" video="mainVideo-health" id="subtitle"]] -[[!template text="and how holding yourself accountable" start="00:23:02.440" video="mainVideo-health" id="subtitle"]] -[[!template text="can change what you do and what the outcomes are." start="00:23:05.240" video="mainVideo-health" id="subtitle"]] -[[!template text="Just look at this here." start="00:23:09.920" video="mainVideo-health" id="subtitle"]] -[[!template text="Without getting into too much detail," start="00:23:14.160" video="mainVideo-health" id="subtitle"]] -[[!template text="one of the reasons I track my sleep is because," start="00:23:17.280" video="mainVideo-health" id="subtitle"]] -[[!template text="as you can see, my sleep" start="00:23:19.680" video="mainVideo-health" id="subtitle"]] -[[!template text="is not as well-regulated as most people," start="00:23:22.040" video="mainVideo-health" id="subtitle"]] -[[!template text="and that's why I need to do that." start="00:23:26.760" video="mainVideo-health" id="subtitle"]] -[[!template text="This was a time... 10, 12," start="00:23:31.440" video="mainVideo-health" id="subtitle"]] -[[!template text="here's 14 hours of sleep, that's depression." start="00:23:34.441" video="mainVideo-health" id="subtitle"]] -[[!template text="It oscillates a little bit. But then below the goal line," start="00:23:36.640" video="mainVideo-health" id="subtitle"]] -[[!template text="the things are a little more normal here." start="00:23:43.520" video="mainVideo-health" id="subtitle"]] -[[!template text="This is a little more normal." start="00:23:45.640" video="mainVideo-health" id="subtitle"]] -[[!template text="But then, really, without thinking about it too much," start="00:23:46.920" video="mainVideo-health" id="subtitle"]] -[[!template text="I cut out the nicotine, and my sleep suffered." start="00:23:52.080" video="mainVideo-health" id="subtitle"]] -[[!template text="Just the fact that I'm able to look and see that connection" start="00:23:56.240" video="mainVideo-health" id="subtitle"]] -[[!template text="is really amazing to me." start="00:24:00.200" video="mainVideo-health" id="subtitle"]] -[[!template text="Maybe I would have anyway," start="00:24:01.360" video="mainVideo-health" id="subtitle"]] -[[!template text="but looking at the whole months of data," start="00:24:02.760" video="mainVideo-health" id="subtitle"]] -[[!template text="there have been many things to discuss" start="00:24:05.240" video="mainVideo-health" id="subtitle"]] -[[!template text="and many things to think about." start="00:24:07.400" video="mainVideo-health" id="subtitle"]] -[[!template new="1" text="Because this is a short presentation," start="00:24:09.920" video="mainVideo-health" id="subtitle"]] -[[!template text="I probably should wrap up." start="00:24:12.160" video="mainVideo-health" id="subtitle"]] -[[!template text="I just want to thank the whole Emacs community" start="00:24:13.840" video="mainVideo-health" id="subtitle"]] -[[!template text="for being there and for including me in the conference" start="00:24:18.240" video="mainVideo-health" id="subtitle"]] -[[!template text="and I hope to participate next year as well." start="00:24:23.320" video="mainVideo-health" id="subtitle"]] -[[!template text="Thank you so much." start="00:24:27.080" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""Hi, this is Dave O'Toole, and today""" start="00:00:00.000" video="mainVideo-health" id="subtitle"]] +[[!template text="""I'll be giving a presentation on tracking health data""" start="00:00:04.000" video="mainVideo-health" id="subtitle"]] +[[!template text="""with Emacs, Org Mode, and gnuplot.""" start="00:00:07.800" video="mainVideo-health" id="subtitle"]] +[[!template text="""So gnuplot is the well-known scientific""" start="00:00:12.760" video="mainVideo-health" id="subtitle"]] +[[!template text="""and mathematical plotting application.""" start="00:00:16.080" video="mainVideo-health" id="subtitle"]] +[[!template text="""You feed it text files full of names, dates, numbers,""" start="00:00:19.040" video="mainVideo-health" id="subtitle"]] +[[!template text="""data points, and you get out a nice graph.""" start="00:00:24.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""You can spit out SVG. You can spit out PNG graphics.""" start="00:00:27.200" video="mainVideo-health" id="subtitle"]] +[[!template text="""In this case, we're using an SVG.""" start="00:00:31.120" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""What I'm going to show you today""" start="00:00:33.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""is how to take daily health journal items:""" start="00:00:36.840" video="mainVideo-health" id="subtitle"]] +[[!template text="""in other words, things like I exercised""" start="00:00:39.840" video="mainVideo-health" id="subtitle"]] +[[!template text="""such and such number of minutes today,""" start="00:00:42.120" video="mainVideo-health" id="subtitle"]] +[[!template text="""I got X hours of sleep last night,""" start="00:00:44.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""I used such and such number of pieces of nicotine gum,""" start="00:00:47.400" video="mainVideo-health" id="subtitle"]] +[[!template text="""say five pieces. So let's see,""" start="00:00:51.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""we've got this whole picture here, all right,""" start="00:00:54.560" video="mainVideo-health" id="subtitle"]] +[[!template text="""and I've tracked here...""" start="00:00:58.440" video="mainVideo-health" id="subtitle"]] +[[!template text="""This is a month of data from my life.""" start="00:00:59.360" video="mainVideo-health" id="subtitle"]] +[[!template text="""This is... I'm not showing all the variables,""" start="00:01:02.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""but this is what I felt comfortable sharing""" start="00:01:05.160" video="mainVideo-health" id="subtitle"]] +[[!template text="""in order to help people who might have a need to track,""" start="00:01:08.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""either because of a chronic condition,""" start="00:01:14.240" video="mainVideo-health" id="subtitle"]] +[[!template text="""or just because of a health improvement goal""" start="00:01:15.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""or what have you, people who might need to""" start="00:01:18.600" video="mainVideo-health" id="subtitle"]] +[[!template text="""track health data in a way""" start="00:01:20.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""that's a little bit more robust""" start="00:01:23.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""than just one or two variables""" start="00:01:24.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""and just weight or just blood pressure.""" start="00:01:26.600" video="mainVideo-health" id="subtitle"]] +[[!template text="""So in this case, I've got exercise,""" start="00:01:29.840" video="mainVideo-health" id="subtitle"]] +[[!template text="""I've got the number of hours of sleep,""" start="00:01:33.080" video="mainVideo-health" id="subtitle"]] +[[!template text="""the number of doses of nicotine,""" start="00:01:36.400" video="mainVideo-health" id="subtitle"]] +[[!template text="""(that's the yellow line here),""" start="00:01:38.560" video="mainVideo-health" id="subtitle"]] +[[!template text="""and this is referring to nicotine gum.""" start="00:01:40.800" video="mainVideo-health" id="subtitle"]] +[[!template text="""What we're going to be talking about""" start="00:01:44.240" video="mainVideo-health" id="subtitle"]] +[[!template text="""is looking at connections, the idea""" start="00:01:45.560" video="mainVideo-health" id="subtitle"]] +[[!template text="""that plotting your data can actually""" start="00:01:47.840" video="mainVideo-health" id="subtitle"]] +[[!template text="""help you figure out what's going on.""" start="00:01:49.880" video="mainVideo-health" id="subtitle"]] +[[!template text="""This is just one month.""" start="00:01:52.120" video="mainVideo-health" id="subtitle"]] +[[!template text="""I've been doing this for a couple of months now,""" start="00:01:53.080" video="mainVideo-health" id="subtitle"]] +[[!template text="""but I felt comfortable showing one month""" start="00:01:55.440" video="mainVideo-health" id="subtitle"]] +[[!template text="""with a limited subset of the variables.""" start="00:01:57.560" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""What I'm going to be doing in this presentation""" start="00:01:59.440" video="mainVideo-health" id="subtitle"]] +[[!template text="""is showing you how to set up your org templates""" start="00:02:02.240" video="mainVideo-health" id="subtitle"]] +[[!template text="""so that you can, you know, hit a hotkey""" start="00:02:05.280" video="mainVideo-health" id="subtitle"]] +[[!template text="""to capture today's data with an org template--""" start="00:02:08.800" video="mainVideo-health" id="subtitle"]] +[[!template text="""or in this case yesterday's. Usually I'm saying, okay,""" start="00:02:11.840" video="mainVideo-health" id="subtitle"]] +[[!template text="""yesterday this happened,""" start="00:02:14.200" video="mainVideo-health" id="subtitle"]] +[[!template text="""because you don't know until the day's over""" start="00:02:15.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""how many pieces of nicotine gum you ate""" start="00:02:17.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""or how many hours you slept.""" start="00:02:19.720" video="mainVideo-health" id="subtitle"]] +[[!template text="""So usually we're recording data for the previous day.""" start="00:02:21.440" video="mainVideo-health" id="subtitle"]] +[[!template text="""We can set up a capture template""" start="00:02:25.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""so that it fills a little org entry. One for exercise,""" start="00:02:28.080" video="mainVideo-health" id="subtitle"]] +[[!template text="""one for sleep, one for nicotine, one for distress.""" start="00:02:30.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""Here distress is just 1 to 10:""" start="00:02:34.280" video="mainVideo-health" id="subtitle"]] +[[!template text="""how bad do you feel today?""" start="00:02:36.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""It's not a scientific measure, but you know,""" start="00:02:38.560" video="mainVideo-health" id="subtitle"]] +[[!template text="""many, many things ask you to rate""" start="00:02:41.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""on a scale of 1 to 10, how bad is the anxiety,""" start="00:02:43.360" video="mainVideo-health" id="subtitle"]] +[[!template text="""how bad is the general level of stress,""" start="00:02:47.120" video="mainVideo-health" id="subtitle"]] +[[!template text="""and so without a lot of complication,""" start="00:02:49.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""I just rate that one to ten.""" start="00:02:51.680" video="mainVideo-health" id="subtitle"]] +[[!template text="""Pain, okay, we won't have to get into any details,""" start="00:02:53.160" video="mainVideo-health" id="subtitle"]] +[[!template text="""but if there is a level of chronic pain, well,""" start="00:02:58.800" video="mainVideo-health" id="subtitle"]] +[[!template text="""I put that between 1 and 10. As we can see here,""" start="00:03:00.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""during the period that I've shown you, it's pretty low.""" start="00:03:04.240" video="mainVideo-health" id="subtitle"]] +[[!template text="""There's some. If you miss a dose of medication,""" start="00:03:07.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""you can track that, in this case""" start="00:03:11.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""with a big ugly red triangle, you know.""" start="00:03:13.600" video="mainVideo-health" id="subtitle"]] +[[!template text="""You can see, I can see here that in mid-, in late September,""" start="00:03:17.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""sorry, in early to mid-October,""" start="00:03:24.280" video="mainVideo-health" id="subtitle"]] +[[!template text="""I stopped using the nicotine gum""" start="00:03:29.200" video="mainVideo-health" id="subtitle"]] +[[!template text="""and probably should have cut down more gradually""" start="00:03:31.000" video="mainVideo-health" id="subtitle"]] +[[!template text="""because my sleep suffered. Look at this.""" start="00:03:32.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""The sleep line is down here, okay?""" start="00:03:34.760" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""What I'm going to do now,""" start="00:03:38.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""now that I've shown you the graph""" start="00:03:39.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""and some of the things that are useful about it,""" start="00:03:40.880" video="mainVideo-health" id="subtitle"]] +[[!template text="""I'm going to actually take a step back""" start="00:03:44.800" video="mainVideo-health" id="subtitle"]] +[[!template text="""and show you from start to finish how you can do this""" start="00:03:46.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""in GNU Emacs, and I have a little template generator""" start="00:03:50.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""that you can use if you'd like.""" start="00:03:53.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""All right, so let's go back.""" start="00:03:56.280" video="mainVideo-health" id="subtitle"]] +[[!template text="""Let's step back from this file.""" start="00:03:59.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""We're going to split the screen, and on the left side,""" start="00:04:01.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""I'm going to put the underlying Org file""" start="00:04:07.600" video="mainVideo-health" id="subtitle"]] +[[!template text="""that generates this graph.""" start="00:04:09.840" video="mainVideo-health" id="subtitle"]] +[[!template text="""Let me shrink that a little bit.""" start="00:04:10.920" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""All right, I'm going to work my way backwards""" start="00:04:16.840" video="mainVideo-health" id="subtitle"]] +[[!template text="""from the template to the template generator,""" start="00:04:22.760" video="mainVideo-health" id="subtitle"]] +[[!template text="""meaning that you'll be able to spit out,""" start="00:04:26.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""given your own specification of health variables,""" start="00:04:28.440" video="mainVideo-health" id="subtitle"]] +[[!template text="""you'll be able to have it spit out""" start="00:04:31.840" video="mainVideo-health" id="subtitle"]] +[[!template text="""a custom gnuplot script like this""" start="00:04:33.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""that's preset up with the definitions""" start="00:04:38.160" video="mainVideo-health" id="subtitle"]] +[[!template text="""for the column view in Org mode.""" start="00:04:41.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""I'm assuming a little bit of familiarity""" start="00:04:43.160" video="mainVideo-health" id="subtitle"]] +[[!template text="""with Org mode and gnuplotting,""" start="00:04:45.400" video="mainVideo-health" id="subtitle"]] +[[!template text="""but I'll try to explain as much as I can as I go along.""" start="00:04:47.200" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""The journal here is where... okay, okay, one moment.""" start="00:04:51.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""So as you can see, there's a sub-entry here""" start="00:04:59.040" video="mainVideo-health" id="subtitle"]] +[[!template text="""for each day that I've included from my data set""" start="00:05:03.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""starting on September 13th of this year""" start="00:05:06.280" video="mainVideo-health" id="subtitle"]] +[[!template text="""and ending on October 17th.""" start="00:05:08.560" video="mainVideo-health" id="subtitle"]] +[[!template text="""And there's an Org property drawer with""" start="00:05:10.400" video="mainVideo-health" id="subtitle"]] +[[!template text="""the corresponding names of each field and the value.""" start="00:05:16.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""Now the idea here is that the columns specify...""" start="00:05:29.800" video="mainVideo-health" id="subtitle"]] +[[!template text="""if you know a little bit about Org mode,""" start="00:05:36.760" video="mainVideo-health" id="subtitle"]] +[[!template text="""what happens is that you...""" start="00:05:40.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""let's say that I hit the key for my journal template,""" start="00:05:43.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""which... Mine is very similar.""" start="00:05:50.920" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""This is the capture buffer for today's date,""" start="00:05:52.800" video="mainVideo-health" id="subtitle"]] +[[!template text="""and if you're recording yesterday's date,""" start="00:06:00.880" video="mainVideo-health" id="subtitle"]] +[[!template text="""you can just flip it like that if you need to.""" start="00:06:02.680" video="mainVideo-health" id="subtitle"]] +[[!template text="""Then I say, yesterday, I remember""" start="00:06:04.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""I went for about a one-mile walk,""" start="00:06:08.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""so that's probably about 20 minutes,""" start="00:06:11.160" video="mainVideo-health" id="subtitle"]] +[[!template text="""and that I had such and such,""" start="00:06:14.120" video="mainVideo-health" id="subtitle"]] +[[!template text="""I had eight and a half hours of sleep, let's say.""" start="00:06:16.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""I estimate how many pieces of nicotine gum I have.""" start="00:06:19.080" video="mainVideo-health" id="subtitle"]] +[[!template text="""I try to count as closely as I can, how much distress,""" start="00:06:22.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""you know what I mean,""" start="00:06:25.800" video="mainVideo-health" id="subtitle"]] +[[!template text="""whether or not I missed a dose of medication.""" start="00:06:26.360" video="mainVideo-health" id="subtitle"]] +[[!template text="""Then when you hit C-c C-c,""" start="00:06:28.280" video="mainVideo-health" id="subtitle"]] +[[!template text="""it captures that to the end of your Org file.""" start="00:06:32.400" video="mainVideo-health" id="subtitle"]] +[[!template text="""Now what this shows is that... I cut and paste it in.""" start="00:06:39.800" video="mainVideo-health" id="subtitle"]] +[[!template text="""I've been keeping these entries every day for months,""" start="00:06:46.680" video="mainVideo-health" id="subtitle"]] +[[!template text="""and that I cut and pasted in a month of data.""" start="00:06:48.160" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""Now I'm going to dig in a little bit to the gnuplot script.""" start="00:06:51.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""This here, all this stuff, is one component of the graph,""" start="00:07:00.800" video="mainVideo-health" id="subtitle"]] +[[!template text="""and I'll go over how it works.""" start="00:07:07.760" video="mainVideo-health" id="subtitle"]] +[[!template text="""First, the items through this column declaration here,""" start="00:07:11.360" video="mainVideo-health" id="subtitle"]] +[[!template text="""and the id:myid, this columnview table here,""" start="00:07:19.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""\#+BEGIN: columnview, this whole bit here,""" start="00:07:30.200" video="mainVideo-health" id="subtitle"]] +[[!template text="""is going to get filled in with the corresponding columns,""" start="00:07:34.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""exercise minutes, sleep hours, nicotine doses.""" start="00:07:39.880" video="mainVideo-health" id="subtitle"]] +[[!template text="""And then it gets pumped out by Org mode into a file""" start="00:07:43.040" video="mainVideo-health" id="subtitle"]] +[[!template text="""that looks like this: tab-separated values""" start="00:07:53.560" video="mainVideo-health" id="subtitle"]] +[[!template text="""with an ISO-style date at the beginning.""" start="00:07:59.841" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""So what we're going to do is we're going to go through""" start="00:08:03.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""the gnuplot portion of this,""" start="00:08:10.360" video="mainVideo-health" id="subtitle"]] +[[!template text="""and I'm going to enlarge the font a little.""" start="00:08:14.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""I'm going to go line by line through the gnuplot portion.""" start="00:08:21.280" video="mainVideo-health" id="subtitle"]] +[[!template text="""Now, my template generator will give you one like this.""" start="00:08:23.720" video="mainVideo-health" id="subtitle"]] +[[!template text="""You don't have to write this from scratch.""" start="00:08:30.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""But I'm going to go through it line by line""" start="00:08:33.120" video="mainVideo-health" id="subtitle"]] +[[!template text="""because if you do use the template,""" start="00:08:35.680" video="mainVideo-health" id="subtitle"]] +[[!template text="""then it'll help to have gone through it line by line,""" start="00:08:37.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""because you're probably going to have to modify it.""" start="00:08:42.200" video="mainVideo-health" id="subtitle"]] +[[!template text="""So first, we're going to clear the graphics""" start="00:08:46.680" video="mainVideo-health" id="subtitle"]] +[[!template text="""from any previous runs""" start="00:08:49.120" video="mainVideo-health" id="subtitle"]] +[[!template text="""so that if we reuse the same gnuplot process,""" start="00:08:50.200" video="mainVideo-health" id="subtitle"]] +[[!template text="""we're not overwriting the old--""" start="00:08:53.800" video="mainVideo-health" id="subtitle"]] +[[!template text="""that we are completely overwriting the old image.""" start="00:08:57.760" video="mainVideo-health" id="subtitle"]] +[[!template text="""So that's the purpose of this line here.""" start="00:09:00.720" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""The output parameters: we want to put out an SVG file.""" start="00:09:03.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""Font Arial, that's funny,""" start="00:09:08.560" video="mainVideo-health" id="subtitle"]] +[[!template text="""but I don't know what font it's actually ending up choosing,""" start="00:09:13.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""but it looks fine.""" start="00:09:16.120" video="mainVideo-health" id="subtitle"]] +[[!template text="""Then we want it to be square,""" start="00:09:16.880" video="mainVideo-health" id="subtitle"]] +[[!template text="""so I'm giving it 900 by 900 pixels,""" start="00:09:19.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""even though it is a scalable vector graphic.""" start="00:09:21.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""We're putting it in the same folder as the org file,""" start="00:09:23.720" video="mainVideo-health" id="subtitle"]] +[[!template text="""example.svg.""" start="00:09:29.160" video="mainVideo-health" id="subtitle"]] +[[!template text="""These lines here set it up to use the Org mode format""" start="00:09:30.800" video="mainVideo-health" id="subtitle"]] +[[!template text="""that we showed in the other file over here.""" start="00:09:39.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""The time format is four-digit year, two-digit month,""" start="00:09:42.680" video="mainVideo-health" id="subtitle"]] +[[!template text="""two-digit day.""" start="00:09:48.360" video="mainVideo-health" id="subtitle"]] +[[!template text="""The time format doesn't specify here the time,""" start="00:09:50.360" video="mainVideo-health" id="subtitle"]] +[[!template text="""but that doesn't seem to mess it up.""" start="00:09:56.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""This line "set datafile separator" means that""" start="00:09:59.600" video="mainVideo-health" id="subtitle"]] +[[!template text="""the separators between that""" start="00:10:02.440" video="mainVideo-health" id="subtitle"]] +[[!template text="""and between all the other fields are tabs,""" start="00:10:04.240" video="mainVideo-health" id="subtitle"]] +[[!template text="""which is what Org mode does""" start="00:10:06.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""when it spits out a table by default.""" start="00:10:08.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""Okay, along to the next lines.""" start="00:10:11.000" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""We're going to set up for time series data,""" start="00:10:15.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""meaning that the x-axis is going to be time,""" start="00:10:18.120" video="mainVideo-health" id="subtitle"]] +[[!template text="""x2tics 1 format.""" start="00:10:22.808" video="mainVideo-health" id="subtitle"]] +[[!template text="""I believe this means that every day has one tick""" start="00:10:26.120" video="mainVideo-health" id="subtitle"]] +[[!template text="""and that this tells it that the first--""" start="00:10:30.400" video="mainVideo-health" id="subtitle"]] +[[!template text="""unfortunately, I forget the exact meaning of this one line.""" start="00:10:32.880" video="mainVideo-health" id="subtitle"]] +[[!template text="""I'm just going to move on. We want one X tick per day,""" start="00:10:39.360" video="mainVideo-health" id="subtitle"]] +[[!template text="""and because X is in seconds,""" start="00:10:44.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""it's 24 hours times 60 minutes times 60 seconds.""" start="00:10:46.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""This line "set grid xtics" gives us""" start="00:10:50.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""a vertical line on each day of the graph.""" start="00:10:55.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""I'll pull up the graph""" start="00:10:57.280" video="mainVideo-health" id="subtitle"]] +[[!template text="""just so that it's a little easier to see.""" start="00:10:58.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""All these vertical lines, one on each day,""" start="00:11:00.040" video="mainVideo-health" id="subtitle"]] +[[!template text="""that's given to you by "set grid xtics".""" start="00:11:03.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""One Y tick every five points.""" start="00:11:06.200" video="mainVideo-health" id="subtitle"]] +[[!template text="""So here at five pieces of nicotine,""" start="00:11:10.160" video="mainVideo-health" id="subtitle"]] +[[!template text="""we've got a five, at ten pieces – well,""" start="00:11:13.720" video="mainVideo-health" id="subtitle"]] +[[!template text="""we don't want to eat ten pieces, but ten, fifteen, twenty.""" start="00:11:15.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""Rotating the labels to make them fit a little bit better,""" start="00:11:19.680" video="mainVideo-health" id="subtitle"]] +[[!template text="""that's this part here where the labels are sideways,""" start="00:11:25.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""and even with just one month of data,""" start="00:11:28.040" video="mainVideo-health" id="subtitle"]] +[[!template text="""they're getting a little crowded.""" start="00:11:30.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""This "set key box lc" just makes the line around the key,""" start="00:11:35.160" video="mainVideo-health" id="subtitle"]] +[[!template text="""the legend here, a little bit less severe.""" start="00:11:41.400" video="mainVideo-health" id="subtitle"]] +[[!template text="""set xtics format: this makes it so that, for example,""" start="00:11:44.040" video="mainVideo-health" id="subtitle"]] +[[!template text="""I've done a United-States-style date here""" start="00:11:51.080" video="mainVideo-health" id="subtitle"]] +[[!template text="""with the month and then the day.""" start="00:11:53.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""You don't necessarily have to do that.""" start="00:11:55.280" video="mainVideo-health" id="subtitle"]] +[[!template text="""You can have whatever you want.""" start="00:11:58.840" video="mainVideo-health" id="subtitle"]] +[[!template text="""This xtics format,""" start="00:12:01.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""that relates to how the dates are printed.""" start="00:12:03.080" video="mainVideo-health" id="subtitle"]] +[[!template text="""Remember that over here, this set timefmt,""" start="00:12:06.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""that relates to how the dates are formatted""" start="00:12:12.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""in the Org mode output.""" start="00:12:15.160" video="mainVideo-health" id="subtitle"]] +[[!template text="""So remember, those are two...""" start="00:12:17.000" video="mainVideo-health" id="subtitle"]] +[[!template text="""You don't want to mix those up.""" start="00:12:18.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""All right, "yrange [0:40]".""" start="00:12:19.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""Thus far, my exercise sessions have all been""" start="00:12:23.800" video="mainVideo-health" id="subtitle"]] +[[!template text="""less than 30 minutes, and nothing's gone over 30.""" start="00:12:28.720" video="mainVideo-health" id="subtitle"]] +[[!template text="""If you have a health variable""" start="00:12:31.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""that is in a significantly different range,""" start="00:12:35.840" video="mainVideo-health" id="subtitle"]] +[[!template text="""you may need to get a slightly more complicated""" start="00:12:38.120" video="mainVideo-health" id="subtitle"]] +[[!template text="""gnuplot script because it is possible to plot""" start="00:12:41.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""multiple yranges in one plot""" start="00:12:43.720" video="mainVideo-health" id="subtitle"]] +[[!template text="""if you have a variable that uses a different range.""" start="00:12:46.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""It's just a little trickier.""" start="00:12:48.720" video="mainVideo-health" id="subtitle"]] +[[!template text="""These parts here, aside from the fact""" start="00:12:49.760" video="mainVideo-health" id="subtitle"]] +[[!template text="""that you might make some changes that relate to""" start="00:12:55.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""the date and your country format,""" start="00:12:59.080" video="mainVideo-health" id="subtitle"]] +[[!template text="""are going to be the same.""" start="00:13:01.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""This is like boilerplate for almost anything.""" start="00:13:03.240" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""Now here are the parts that are going to vary""" start="00:13:05.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""depending on what health variables you want to store.""" start="00:13:09.800" video="mainVideo-health" id="subtitle"]] +[[!template text="""There are three main sections here.""" start="00:13:13.400" video="mainVideo-health" id="subtitle"]] +[[!template text="""One is setting the different line types that are used.""" start="00:13:18.040" video="mainVideo-health" id="subtitle"]] +[[!template text="""Setting linetype 1 with line width 2, line color RGB.""" start="00:13:28.720" video="mainVideo-health" id="subtitle"]] +[[!template text="""Unfortunately, gnuplot is a little bit cryptic,""" start="00:13:32.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""which is why I've made this template generator""" start="00:13:34.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""that I'll show you in a moment.""" start="00:13:36.880" video="mainVideo-health" id="subtitle"]] +[[!template text="""I pick a color. So this is exercise, forest green.""" start="00:13:38.000" video="mainVideo-health" id="subtitle"]] +[[!template text="""Point size 1, meaning you get""" start="00:13:43.040" video="mainVideo-health" id="subtitle"]] +[[!template text="""these little green triangles about that size.""" start="00:13:49.280" video="mainVideo-health" id="subtitle"]] +[[!template text="""But the point type 9 is the pointing up triangle.""" start="00:13:51.600" video="mainVideo-health" id="subtitle"]] +[[!template text="""Line type 2, purple. So that's the sleep line.""" start="00:13:54.720" video="mainVideo-health" id="subtitle"]] +[[!template text="""So we're just establishing these different line types""" start="00:13:59.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""that we've given arbitrary numbers.""" start="00:14:03.000" video="mainVideo-health" id="subtitle"]] +[[!template text="""Now onto the next section.""" start="00:14:04.720" video="mainVideo-health" id="subtitle"]] +[[!template text="""Oh, before I move on here,""" start="00:14:08.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""you can see point type 11 for line 5, which is red.""" start="00:14:12.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""And that's the missed medications line,""" start="00:14:16.120" video="mainVideo-health" id="subtitle"]] +[[!template text="""so you get a triangle that's upside down""" start="00:14:18.080" video="mainVideo-health" id="subtitle"]] +[[!template text="""because that's point shape 11.""" start="00:14:20.640" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""All right. The next section here is the goal lines.""" start="00:14:22.680" video="mainVideo-health" id="subtitle"]] +[[!template text="""There are horizontal dashed lines here""" start="00:14:27.880" video="mainVideo-health" id="subtitle"]] +[[!template text="""at 8 purple hours of sleep, because 8 hours is the goal.""" start="00:14:33.441" video="mainVideo-health" id="subtitle"]] +[[!template text="""So there's a horizontal line at Y = 8.""" start="00:14:37.360" video="mainVideo-health" id="subtitle"]] +[[!template text="""For pieces of nicotine gum,""" start="00:14:41.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""I'm trying to keep it to around 5 right now.""" start="00:14:43.880" video="mainVideo-health" id="subtitle"]] +[[!template text="""So my goal line is at 5. So these...""" start="00:14:46.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""Here, a goal of at least 20 minutes of exercise.""" start="00:14:52.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""Sometimes I get more, sometimes I get less.""" start="00:14:56.760" video="mainVideo-health" id="subtitle"]] +[[!template text="""There's a green line and a 20, showing that that's the goal.""" start="00:14:59.080" video="mainVideo-health" id="subtitle"]] +[[!template text="""These lines here are actually the goal lines.""" start="00:15:02.200" video="mainVideo-health" id="subtitle"]] +[[!template text="""You can specify the goal for each one""" start="00:15:06.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""in the template generator that I'll show you.""" start="00:15:09.120" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""The last part is the actual plot command.""" start="00:15:12.000" video="mainVideo-health" id="subtitle"]] +[[!template text="""So the dependent... So okay,""" start="00:15:28.080" video="mainVideo-health" id="subtitle"]] +[[!template text="""these all start with 1, "using 1" against this variable.""" start="00:15:30.200" video="mainVideo-health" id="subtitle"]] +[[!template text="""So $2... This is a ternary operator here""" start="00:15:34.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""that says if the value of the second column is zero,""" start="00:15:41.600" video="mainVideo-health" id="subtitle"]] +[[!template text="""then don't plot a point. In other words,""" start="00:15:49.200" video="mainVideo-health" id="subtitle"]] +[[!template text="""not a number means it won't plot a point.""" start="00:15:52.360" video="mainVideo-health" id="subtitle"]] +[[!template text="""The template generator lets you skip over""" start="00:15:56.080" video="mainVideo-health" id="subtitle"]] +[[!template text="""the details of that. It sticks this in there.""" start="00:15:58.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""I'll show you.""" start="00:16:02.120" video="mainVideo-health" id="subtitle"]] +[[!template text="""So we only want to plot a point when the value is non-zero.""" start="00:16:02.760" video="mainVideo-health" id="subtitle"]] +[[!template text="""If there was no exercise, we're not plotting a point.""" start="00:16:09.400" video="mainVideo-health" id="subtitle"]] +[[!template text="""The with construct means we'll plot data""" start="00:16:12.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""using date against exercise with points,""" start="00:16:15.760" video="mainVideo-health" id="subtitle"]] +[[!template text="""the title is "exercise (minutes)", line type 1.""" start="00:16:21.341" video="mainVideo-health" id="subtitle"]] +[[!template text="""Remember, we established line type 1 up here""" start="00:16:25.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""as being forest green, point style 1,""" start="00:16:29.840" video="mainVideo-health" id="subtitle"]] +[[!template text="""point type 9, green triangles.""" start="00:16:35.080" video="mainVideo-health" id="subtitle"]] +[[!template text="""Now I'm going to show 1 against column 3,""" start="00:16:37.600" video="mainVideo-health" id="subtitle"]] +[[!template text="""which is "hours of sleep".""" start="00:16:42.400" video="mainVideo-health" id="subtitle"]] +[[!template text="""This one is plotted with lines,""" start="00:16:43.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""so we don't specify a point type or point size,""" start="00:16:46.040" video="mainVideo-health" id="subtitle"]] +[[!template text="""just a line type 2. And remember, you can see""" start="00:16:48.600" video="mainVideo-health" id="subtitle"]] +[[!template text="""that line type 2 is defined as purple""" start="00:16:51.720" video="mainVideo-health" id="subtitle"]] +[[!template text="""with point type 1, point size 1.""" start="00:16:55.241" video="mainVideo-health" id="subtitle"]] +[[!template text="""Okay, so I did specify point size and point type,""" start="00:16:57.360" video="mainVideo-health" id="subtitle"]] +[[!template text="""but because I'm not plotting with points,""" start="00:16:59.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""those are ignored.""" start="00:17:01.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""Here we come to the line with nicotine.""" start="00:17:02.280" video="mainVideo-health" id="subtitle"]] +[[!template text="""The fourth column is the nicotine number,""" start="00:17:08.800" video="mainVideo-health" id="subtitle"]] +[[!template text="""the fourth column from the Org mode file.""" start="00:17:11.560" video="mainVideo-health" id="subtitle"]] +[[!template text="""So here you can see how we're telling gnuplot""" start="00:17:13.200" video="mainVideo-health" id="subtitle"]] +[[!template text="""to take each column of the tab-separated Org mode file""" start="00:17:16.008" video="mainVideo-health" id="subtitle"]] +[[!template text="""and put it into the graph.""" start="00:17:19.800" video="mainVideo-health" id="subtitle"]] +[[!template text="""The line types are set up here.""" start="00:17:21.120" video="mainVideo-health" id="subtitle"]] +[[!template text="""The goal lines are set up here.""" start="00:17:25.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""And then the actual plot command is set up here.""" start="00:17:30.800" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""So now we're going to work further backwards""" start="00:17:35.560" video="mainVideo-health" id="subtitle"]] +[[!template text="""from this gnuplot template""" start="00:17:41.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""to the template generator that I used to make it.""" start="00:17:42.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""Now I'm not going to go into""" start="00:17:46.560" video="mainVideo-health" id="subtitle"]] +[[!template text="""all of the details of the code,""" start="00:18:01.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""but what I am going to show you is that""" start="00:18:03.760" video="mainVideo-health" id="subtitle"]] +[[!template text="""there's a variable called `health-factors'.""" start="00:18:06.160" video="mainVideo-health" id="subtitle"]] +[[!template text="""And what this does, this `health-factors-from-list'""" start="00:18:10.680" video="mainVideo-health" id="subtitle"]] +[[!template text="""lets you specify, with a property list""" start="00:18:15.840" video="mainVideo-health" id="subtitle"]] +[[!template text="""of keyword and value pairs""" start="00:18:20.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""(here's the keyword name and the value is exercise),""" start="00:18:22.680" video="mainVideo-health" id="subtitle"]] +[[!template text="""the goal that I want 20 minutes of exercise,""" start="00:18:24.800" video="mainVideo-health" id="subtitle"]] +[[!template text="""that the unit is minutes,""" start="00:18:28.200" video="mainVideo-health" id="subtitle"]] +[[!template text="""that the color is forest green, and so on.""" start="00:18:30.200" video="mainVideo-health" id="subtitle"]] +[[!template text="""The aspects of the gnuplot setup""" start="00:18:36.160" video="mainVideo-health" id="subtitle"]] +[[!template text="""have been abstracted here.""" start="00:18:39.440" video="mainVideo-health" id="subtitle"]] +[[!template text="""Eight hours of sleep is the goal here.""" start="00:18:43.560" video="mainVideo-health" id="subtitle"]] +[[!template text="""The hours are units. What color,""" start="00:18:49.280" video="mainVideo-health" id="subtitle"]] +[[!template text="""what thickness of the line.""" start="00:18:54.040" video="mainVideo-health" id="subtitle"]] +[[!template text="""Here we specify the number of points.""" start="00:18:55.120" video="mainVideo-health" id="subtitle"]] +[[!template text="""There's references online""" start="00:19:00.080" video="mainVideo-health" id="subtitle"]] +[[!template text="""that show you what point types are what shapes in gnuplot,""" start="00:19:01.280" video="mainVideo-health" id="subtitle"]] +[[!template text="""and so on and so forth.""" start="00:19:05.200" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""I'll walk through the code a little bit that does this,""" start="00:19:11.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""that actually takes these pieces,""" start="00:19:17.400" video="mainVideo-health" id="subtitle"]] +[[!template text="""that takes this specification of what your variables are""" start="00:19:20.440" video="mainVideo-health" id="subtitle"]] +[[!template text="""and turns it into a template.""" start="00:19:24.400" video="mainVideo-health" id="subtitle"]] +[[!template text="""First, I'm using EIEIO,""" start="00:19:30.440" video="mainVideo-health" id="subtitle"]] +[[!template text="""the object system that's included with GNU Emacs.""" start="00:19:37.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""It's a reasonable facsimile""" start="00:19:41.720" video="mainVideo-health" id="subtitle"]] +[[!template text="""of the Common Lisp Object System.""" start="00:19:45.120" video="mainVideo-health" id="subtitle"]] +[[!template text="""What I'm going to be doing here""" start="00:19:47.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""is defining a class with each of those items,""" start="00:19:51.240" video="mainVideo-health" id="subtitle"]] +[[!template text="""those properties that we talked about in that list""" start="00:19:56.200" video="mainVideo-health" id="subtitle"]] +[[!template text="""that lets you specify name, what the goal is,""" start="00:19:58.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""what the units are, and the gnuplot things""" start="00:20:01.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""(the gnuplot parameters like thickness,""" start="00:20:04.240" video="mainVideo-health" id="subtitle"]] +[[!template text="""plot type, and all that) into a class that will then""" start="00:20:06.560" video="mainVideo-health" id="subtitle"]] +[[!template text="""spit out the template once you feed it""" start="00:20:13.240" video="mainVideo-health" id="subtitle"]] +[[!template text="""some of these health factor objects. So just a moment.""" start="00:20:16.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""For example, you can see that this template""" start="00:20:27.760" video="mainVideo-health" id="subtitle"]] +[[!template text="""originally came from being generated by this code here.""" start="00:20:34.480" video="mainVideo-health" id="subtitle"]] +[[!template text="""To use the template,""" start="00:20:46.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""to use this little template generator...""" start="00:20:52.960" video="mainVideo-health" id="subtitle"]] +[[!template text="""See, here's where it spits out the line type""" start="00:20:55.400" video="mainVideo-health" id="subtitle"]] +[[!template text="""given the pieces.""" start="00:21:06.280" video="mainVideo-health" id="subtitle"]] +[[!template text="""This is all just text formatting.""" start="00:21:07.440" video="mainVideo-health" id="subtitle"]] +[[!template text="""This is one of the things that Emacs Lisp""" start="00:21:09.680" video="mainVideo-health" id="subtitle"]] +[[!template text="""just really excels at.""" start="00:21:11.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""I need to take a piece of data""" start="00:21:13.160" video="mainVideo-health" id="subtitle"]] +[[!template text="""like a list of health information,""" start="00:21:19.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""a list of health variables, what their units are,""" start="00:21:22.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""and how they're supposed to be formatted in gnuplot,""" start="00:21:25.680" video="mainVideo-health" id="subtitle"]] +[[!template text="""and go from that to the nice template.""" start="00:21:28.120" video="mainVideo-health" id="subtitle"]] +[[!template text="""So that's pretty much the whole thing.""" start="00:21:30.200" video="mainVideo-health" id="subtitle"]] +[[!template text="""I want to see if there's anything I missed.""" start="00:21:31.720" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""Bring up the chart.""" start="00:21:41.000" video="mainVideo-health" id="subtitle"]] +[[!template text="""This has been really useful""" start="00:21:51.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""for communicating with healthcare professionals""" start="00:21:54.280" video="mainVideo-health" id="subtitle"]] +[[!template text="""because you are both on the same page""" start="00:21:59.600" video="mainVideo-health" id="subtitle"]] +[[!template text="""about exactly what is happening,""" start="00:22:04.400" video="mainVideo-health" id="subtitle"]] +[[!template text="""what's been happening because if... Let's say""" start="00:22:05.880" video="mainVideo-health" id="subtitle"]] +[[!template text="""that you're tired when you talk to your care provider.""" start="00:22:10.680" video="mainVideo-health" id="subtitle"]] +[[!template text="""Well, if you have objective information""" start="00:22:15.240" video="mainVideo-health" id="subtitle"]] +[[!template text="""that you've been recording every day,""" start="00:22:17.560" video="mainVideo-health" id="subtitle"]] +[[!template text="""that you're ahead of the game, really,""" start="00:22:18.840" video="mainVideo-health" id="subtitle"]] +[[!template text="""because you don't need, necessarily, the presence of mind""" start="00:22:22.400" video="mainVideo-health" id="subtitle"]] +[[!template text="""to be able to give your care provider""" start="00:22:25.120" video="mainVideo-health" id="subtitle"]] +[[!template text="""a complete picture of what's going on in your world.""" start="00:22:27.680" video="mainVideo-health" id="subtitle"]] +[[!template text="""If you can find those few minutes a day to enter--""" start="00:22:30.040" video="mainVideo-health" id="subtitle"]] +[[!template text="""not even a few minutes,""" start="00:22:33.040" video="mainVideo-health" id="subtitle"]] +[[!template text="""really just a minute to enter the data""" start="00:22:34.400" video="mainVideo-health" id="subtitle"]] +[[!template text="""and say what happened yesterday...""" start="00:22:37.760" video="mainVideo-health" id="subtitle"]] +[[!template text="""I'm finding over these months""" start="00:22:39.840" video="mainVideo-health" id="subtitle"]] +[[!template text="""that I've been more in touch with my health when I can--""" start="00:22:42.760" video="mainVideo-health" id="subtitle"]] +[[!template text="""not forced, but when I have the habit,""" start="00:22:45.040" video="mainVideo-health" id="subtitle"]] +[[!template text="""the consistent habit every single day""" start="00:22:49.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""of recording that data--I'm accountable to myself.""" start="00:22:52.160" video="mainVideo-health" id="subtitle"]] +[[!template text="""It's interesting.""" start="00:22:55.840" video="mainVideo-health" id="subtitle"]] +[[!template text="""I guess it gets into a little bit of ideas""" start="00:22:57.360" video="mainVideo-health" id="subtitle"]] +[[!template text="""about the Quantified Self""" start="00:23:01.040" video="mainVideo-health" id="subtitle"]] +[[!template text="""and how holding yourself accountable""" start="00:23:02.440" video="mainVideo-health" id="subtitle"]] +[[!template text="""can change what you do and what the outcomes are.""" start="00:23:05.240" video="mainVideo-health" id="subtitle"]] +[[!template text="""Just look at this here.""" start="00:23:09.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""Without getting into too much detail,""" start="00:23:14.160" video="mainVideo-health" id="subtitle"]] +[[!template text="""one of the reasons I track my sleep is because,""" start="00:23:17.280" video="mainVideo-health" id="subtitle"]] +[[!template text="""as you can see, my sleep""" start="00:23:19.680" video="mainVideo-health" id="subtitle"]] +[[!template text="""is not as well-regulated as most people,""" start="00:23:22.040" video="mainVideo-health" id="subtitle"]] +[[!template text="""and that's why I need to do that.""" start="00:23:26.760" video="mainVideo-health" id="subtitle"]] +[[!template text="""This was a time... 10, 12,""" start="00:23:31.440" video="mainVideo-health" id="subtitle"]] +[[!template text="""here's 14 hours of sleep, that's depression.""" start="00:23:34.441" video="mainVideo-health" id="subtitle"]] +[[!template text="""It oscillates a little bit. But then below the goal line,""" start="00:23:36.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""the things are a little more normal here.""" start="00:23:43.520" video="mainVideo-health" id="subtitle"]] +[[!template text="""This is a little more normal.""" start="00:23:45.640" video="mainVideo-health" id="subtitle"]] +[[!template text="""But then, really, without thinking about it too much,""" start="00:23:46.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""I cut out the nicotine, and my sleep suffered.""" start="00:23:52.080" video="mainVideo-health" id="subtitle"]] +[[!template text="""Just the fact that I'm able to look and see that connection""" start="00:23:56.240" video="mainVideo-health" id="subtitle"]] +[[!template text="""is really amazing to me.""" start="00:24:00.200" video="mainVideo-health" id="subtitle"]] +[[!template text="""Maybe I would have anyway,""" start="00:24:01.360" video="mainVideo-health" id="subtitle"]] +[[!template text="""but looking at the whole months of data,""" start="00:24:02.760" video="mainVideo-health" id="subtitle"]] +[[!template text="""there have been many things to discuss""" start="00:24:05.240" video="mainVideo-health" id="subtitle"]] +[[!template text="""and many things to think about.""" start="00:24:07.400" video="mainVideo-health" id="subtitle"]] +[[!template new="1" text="""Because this is a short presentation,""" start="00:24:09.920" video="mainVideo-health" id="subtitle"]] +[[!template text="""I probably should wrap up.""" start="00:24:12.160" video="mainVideo-health" id="subtitle"]] +[[!template text="""I just want to thank the whole Emacs community""" start="00:24:13.840" video="mainVideo-health" id="subtitle"]] +[[!template text="""for being there and for including me in the conference""" start="00:24:18.240" video="mainVideo-health" id="subtitle"]] +[[!template text="""and I hope to participate next year as well.""" start="00:24:23.320" video="mainVideo-health" id="subtitle"]] +[[!template text="""Thank you so much.""" start="00:24:27.080" video="mainVideo-health" id="subtitle"]] + +Captioner: sachac Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202022%20health%3A%20Health%20data%20journaling%20and%20visualization%20with%20Org%20Mode%20and%20gnuplot) diff --git a/2022/info/health-before.md b/2022/info/health-before.md index efc6a74d..df1467cc 100644 --- a/2022/info/health-before.md +++ b/2022/info/health-before.md @@ -3,15 +3,15 @@ In this talk, David O'Toole shares how he tracked and graphed his personal data The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="health"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect stroke-width="3" x="564" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect stroke-width="3" x="564" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] -Format: 25-min talk followed by live Q&A (<https://emacsconf.org/current/health/room>) +Format: 25-min talk followed by live Q&A (done) Etherpad: <https://pad.emacsconf.org/2022-health> Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A open for participation -<div>Times in different timezones:</div><div class="times" start="2022-12-03T20:00:00Z" end="2022-12-03T20:25:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~3:00 PM - 3:25 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~2:00 PM - 2:25 PM CST (US/Central)<br />Saturday, Dec 3 2022, ~1:00 PM - 1:25 PM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~12:00 PM - 12:25 PM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~8:00 PM - 8:25 PM UTC <br />Saturday, Dec 3 2022, ~9:00 PM - 9:25 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~10:00 PM - 10:25 PM EET (Europe/Athens)<br />Sunday, Dec 4 2022, ~1:30 AM - 1:55 AM IST (Asia/Kolkata)<br />Sunday, Dec 4 2022, ~4:00 AM - 4:25 AM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~5:00 AM - 5:25 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/gen/">Find out how to watch and participate</a></div> +Status: Q&A finished, IRC and pad will be archived on this page + [[!template id="vid" vidid="health-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-health--health-data-journaling-and-visualization-with-org-mode-and-gnuplot--david-otoole--main.webm" poster="https://media.emacsconf.org/2022/emacsconf-2022-health--health-data-journaling-and-visualization-with-org-mode-and-gnuplot--david-otoole--main.png" captions="""<track label="English" kind="captions" srclang="en" src="/2022/captions/emacsconf-2022-health--health-data-journaling-and-visualization-with-org-mode-and-gnuplot--david-otoole--main.vtt" default />""" size="100M" duration="24:29" other_resources="""[Download --main.webm (95MB)](https://media.emacsconf.org/2022/emacsconf-2022-health--health-data-journaling-and-visualization-with-org-mode-and-gnuplot--david-otoole--main.webm) diff --git a/2022/info/hyperorg-before.md b/2022/info/hyperorg-before.md index a22dfd8d..654ac8c9 100644 --- a/2022/info/hyperorg-before.md +++ b/2022/info/hyperorg-before.md @@ -1,11 +1,11 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="hyperorg"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect stroke-width="3" x="376" y="15" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect stroke-width="3" x="376" y="15" opacity="0.8" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] -Format: 30-min talk followed by live Q&A (<https://emacsconf.org/current/hyperorg/room>) +Format: 37-min talk followed by live Q&A (<https://emacsconf.org/current/hyperorg/room>) Etherpad: <https://pad.emacsconf.org/2022-hyperorg> Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) Status: Waiting for video from speaker diff --git a/2022/info/indieweb-before.md b/2022/info/indieweb-before.md index 88bca161..502eb1dc 100644 --- a/2022/info/indieweb-before.md +++ b/2022/info/indieweb-before.md @@ -3,7 +3,7 @@ In this talk, Michael Herstine shows how to set up Org Mode for sending and publ The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="indieweb"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect stroke-width="3" x="603" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect stroke-width="3" x="603" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/journalism-before.md b/2022/info/journalism-before.md index 95e00d04..527b111d 100644 --- a/2022/info/journalism-before.md +++ b/2022/info/journalism-before.md @@ -1,7 +1,7 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="journalism"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect stroke-width="3" x="7" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(578,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect stroke-width="3" x="7" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/jupyter-after.md b/2022/info/jupyter-after.md index b79a2189..c88cd2e8 100644 --- a/2022/info/jupyter-after.md +++ b/2022/info/jupyter-after.md @@ -4,263 +4,265 @@ <a name="jupyter-mainVideo-transcript"></a> # Transcript -[[!template new="1" text="Hi, my name is Blaine Mooers." start="00:00:00.000" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="I'm an associate professor of biochemistry" start="00:00:03.840" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="at the University of Oklahoma Health Sciences Center" start="00:00:05.400" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="in Oklahoma City." start="00:00:08.200" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="I'm going to talk about the use of Emacs" start="00:00:09.760" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="to edit live Jupyter notebook cells" start="00:00:12.000" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="as well as text areas on web pages." start="00:00:16.240" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So like a lot of technical workers," start="00:00:20.520" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="I find myself having to write prose" start="00:00:22.520" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="in text areas on web pages," start="00:00:24.880" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="as well as working with code" start="00:00:28.680" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="in Jupyter notebooks and Colab notebooks," start="00:00:31.720" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and often I have wished for" start="00:00:37.000" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="the full power of Emacs while doing so." start="00:00:39.320" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Well, now that is possible." start="00:00:43.480" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Actually, there are several solutions" start="00:00:45.320" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="that have been available for some time." start="00:00:46.800" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="I'm going to talk about one solution" start="00:00:49.040" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="that I'm familiar with and has worked out for me." start="00:00:50.400" video="mainVideo-jupyter" id="subtitle"]] -[[!template new="1" text="So this requires the use of two software packages," start="00:00:55.320" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="GhostText and Atomic Chrome." start="00:00:58.120" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="GhostText is an extension for the web browser," start="00:01:01.600" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="whereas Atomic Chrome is a package for Emacs." start="00:01:04.240" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="You have to have both of these." start="00:01:07.280" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So Chrome is for the editor side" start="00:01:10.880" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and GhostText handles the browser side." start="00:01:13.400" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="The GhostText extension is available" start="00:01:18.920" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="in the Chrome web store." start="00:01:22.480" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="And GhostText is represented by this icon," start="00:01:26.800" video="mainVideo-jupyter" id="subtitle"]] -[[!template new="1" text="which has a ghost in front of the capital letter T." start="00:01:29.520" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="It is being developed by Federico Brigante." start="00:01:31.520" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="He is a very prolific JavaScript developer." start="00:01:36.400" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="He has a web page committed to GhostText," start="00:01:41.240" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="as well as a GitHub site." start="00:01:44.280" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So here's an example of GhostText." start="00:01:47.200" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="This is a snapshot from a session" start="00:01:50.160" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="that I had while editing LaTeX on the Overleaf website." start="00:01:54.840" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Overleaf is this web service" start="00:02:01.280" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="that empowers the editing of LaTeX documents on the web." start="00:02:03.760" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So I have clicked on this GhostText icon in the toolbar." start="00:02:09.720" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="I had already opened up Emacs," start="00:02:14.040" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and I had the Atomic Chrome server running." start="00:02:17.040" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So a connection was established," start="00:02:19.880" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="as indicated by this blue border around this text area." start="00:02:21.800" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="And as soon as that appeared," start="00:02:28.600" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="the text appeared in a buffer inside of Emacs." start="00:02:30.520" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So I have overlaid the area where normally the compiled PDF" start="00:02:35.320" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="would appear in an Overleaf session." start="00:02:40.160" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So I'm using a configuration for LaTeX that I developed," start="00:02:43.920" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="which is available through the MooersLab GitHub site." start="00:02:47.680" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="I also gave a talk about how I use LaTeX in Emacs" start="00:02:52.160" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="at the Berlin Emacs meetup in August." start="00:02:55.920" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="This talk was not recorded," start="00:02:58.840" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="but the slides are available on this website." start="00:03:00.040" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So I would like to now switch to a little live coding" start="00:03:05.120" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="to make this a little more interesting." start="00:03:09.520" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So I start my day at this other website called 750Words." start="00:03:12.360" video="mainVideo-jupyter" id="subtitle"]] -[[!template new="1" text="This site just takes plain text," start="00:03:22.440" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="but I like to write in LaTeX." start="00:03:25.280" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So GhostText came to my rescue" start="00:03:28.560" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="when I started using this everyday last May." start="00:03:31.520" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So I clicked on the GhostText icon." start="00:03:34.480" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="It highlighted that area in blue." start="00:03:37.240" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="There's some boilerplate" start="00:03:39.760" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="that I like to start my day with." start="00:03:41.840" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="I like to get a list of my deadlines" start="00:03:45.920" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="that are coming up, as shown here," start="00:03:50.600" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="for the next several months." start="00:03:54.240" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="And then I have landed at this tab stop." start="00:03:55.840" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="And so I had issued a tab trigger" start="00:03:59.400" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="which inserted this almost 50 lines of text" start="00:04:04.240" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="from a snippet through Yasnippet." start="00:04:09.520" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="And then I'll change this text to whatever." start="00:04:13.640" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="And then I can hit TAB to move to the next site." start="00:04:17.480" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="I was dead tired last night, so I fell asleep at my desk," start="00:04:29.280" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and whatever. So I just keep on going" start="00:04:38.440" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and then hit TAB again and enter my "To Be Done" items." start="00:04:42.440" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="And then what I love about Emacs is that" start="00:04:47.320" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="you can hit C-c C-j to insert a new item and so forth," start="00:04:50.240" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="so you can extend the list." start="00:04:56.120" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Initially, I just have 10 items." start="00:05:03.240" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="I'm going to have more. And on I go," start="00:05:05.080" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="using the full power of LaTeX." start="00:05:08.840" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So I have configured Atomic Chrome" start="00:05:12.360" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="so it will recognize this website as a –" start="00:05:16.120" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="it will open up this website –" start="00:05:20.000" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="the connection to this website with this buffer" start="00:05:21.400" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="in the LaTeX major mode. To turn this off," start="00:05:26.160" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="we can close – simply just close the buffer" start="00:05:36.560" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and that will shut things down." start="00:05:40.320" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="On the browser side, you can right-click on the icon" start="00:05:42.960" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and disconnect GhostText on this page." start="00:05:46.400" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Okay, let's go to a different situation." start="00:05:49.040" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="This is not a feature that's advertised by the developer," start="00:05:53.640" video="mainVideo-jupyter" id="subtitle"]] -[[!template new="1" text="but I discovered that you can edit code cells" start="00:05:57.360" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="(or any kind of cell for that matter)" start="00:06:00.120" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="in a Jupyter Notebook." start="00:06:02.800" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="However, we have a challenge here." start="00:06:04.440" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="We have three text areas open – three code cells." start="00:06:05.720" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So if we click on the GhostText icon," start="00:06:09.320" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="these three areas will show up in green" start="00:06:14.760" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and we'll be prompted to select the one" start="00:06:17.480" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="that we want to activate." start="00:06:19.120" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="We want to activate the one with text." start="00:06:20.280" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So then we can go in here and make edits, of course," start="00:06:22.360" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and you can do this in Emacs" start="00:06:31.400" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="or we can do it in the browser. It doesn't matter." start="00:06:33.360" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="You saw me editing in Emacs," start="00:06:35.640" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="but we can also make the edits" start="00:06:38.360" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="in the text area of the browser" start="00:06:40.360" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and they will show up immediately in Emacs." start="00:06:44.880" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So we could change the case of that M and that's going to –" start="00:06:47.520" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="shows up over here. Okay, we can run this code." start="00:06:54.440" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So this is R, one of the three major" start="00:06:59.280" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="programming languages for data science." start="00:07:03.440" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="At least, Jupyter is supposed to be" start="00:07:05.160" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="a combination of Julia, Python, and R." start="00:07:07.320" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So we're running mcmc to get the posterior distribution" start="00:07:13.480" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and we're going to plot those out with this pyplots package," start="00:07:17.560" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and we have these beautiful plots showing the median" start="00:07:21.120" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="of the posterior distribution for four variables in –" start="00:07:24.080" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="four parameters in the CARS data set," start="00:07:27.040" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="which is available – built into the R package." start="00:07:31.560" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="And then these shaded areas are the 80% interval." start="00:07:38.040" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Okay. Oops." start="00:07:45.560" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So now for the Python side," start="00:07:49.160" video="mainVideo-jupyter" id="subtitle"]] -[[!template new="1" text="here's an example in which I'm going to actually" start="00:08:07.640" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="insert a snippet of that cell" start="00:08:13.360" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and then I'm going to enter nvlig for nglview ligand," start="00:08:18.680" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and just hit enter. Oops. Hit TAB, excuse me," start="00:08:27.280" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and we don't need this line of code, so delete that." start="00:08:43.320" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Yep, we want to load up this pdb file" start="00:08:48.000" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="that's in this subdirectory." start="00:08:52.200" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So the pdb file is a plain text file" start="00:08:54.280" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="that contains atomic coordinates" start="00:08:56.920" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="of protein crystal structure." start="00:08:58.840" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="This protein happens to be important in cancer" start="00:09:00.160" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and we have – we screened by docking 55,000 compounds" start="00:09:03.000" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="on a supercomputer" start="00:09:09.080" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and then we did MD [molecular dynamics] simulations" start="00:09:10.680" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="of the top 10 [actually 20] leads." start="00:09:12.744" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Twelve of them had the compound remain bound" start="00:09:14.160" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="during the period of the simulation," start="00:09:18.320" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="so those have some potential for –" start="00:09:19.680" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and require experimental validation." start="00:09:22.560" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So we'll run this chunk of code," start="00:09:25.160" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and this will give a view of the molecule" start="00:09:28.640" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="that we can interact with by using the mouse." start="00:09:30.840" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="But I want to share this with my colleague." start="00:09:36.480" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="My colleague is not set up to use Jupyter," start="00:09:39.880" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="but instead we can write this out to a HTML file," start="00:09:42.920" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="which I have loaded up already." start="00:09:46.960" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="And so we can actually – perhaps." start="00:09:48.320" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="We click on these two arrows pointing at each other," start="00:09:55.320" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and we can get a full screen view of this molecule" start="00:10:01.680" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and he can identify each atom in this structure." start="00:10:05.160" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Over a thousand atoms present." start="00:10:10.440" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="We're just hovering over a specific atom." start="00:10:12.720" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So shown in gray is the ligand that is bound. Okay." start="00:10:14.960" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So we still have this box selected" start="00:10:27.760" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and we still have these two different –" start="00:10:32.080" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="so for each of the – our selected text areas" start="00:10:36.560" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="we have a separate – we have a separate buffer open. Okay." start="00:10:40.520" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="To wrap things up here, here's an example of using –" start="00:11:03.840" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="with evolving Julia code." start="00:11:06.840" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="And so this Julia code in this cell is in a Emacs buffer." start="00:11:08.920" video="mainVideo-jupyter" id="subtitle"]] -[[!template new="1" text="So you've got an idea now, I think." start="00:11:12.920" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So in terms of plain text areas like in Overleaf" start="00:11:19.280" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and then these cells in Jupyter Notebooks," start="00:11:23.760" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="these are other areas that can be edited" start="00:11:27.520" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="like in the text areas within Outlook Webmail and Gmail." start="00:11:30.960" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Instead of having to point with the mouse" start="00:11:37.920" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="or click with the mouse," start="00:11:42.640" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="one can also use keybindings or keyboard shortcuts." start="00:11:43.520" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So here are the ones for three major operating systems." start="00:11:48.080" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So how does GhostText work?" start="00:11:51.600" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Main thing is you have to open up Emacs" start="00:11:54.640" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and get this Atomic Chrome server running." start="00:11:57.200" video="mainVideo-jupyter" id="subtitle"]] -[[!template new="1" text="And then with it up and going," start="00:11:59.680" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="GhostText will be able to – has to be activated" start="00:12:03.120" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and it will find the GhostText server" start="00:12:06.680" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="through the localhost port 4001." start="00:12:09.640" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Put that into the web browser." start="00:12:15.080" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="If you navigate to that port," start="00:12:19.040" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="you'll get output that looks like this" start="00:12:21.640" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="if everything's working well." start="00:12:23.720" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Otherwise, you'll get a error message" start="00:12:25.640" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and it should have a port socket –" start="00:12:27.920" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="a web socket port number." start="00:12:30.520" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="It will not be the same every time." start="00:12:34.320" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So these are the supported web browsers" start="00:12:36.320" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="in addition to Chrome. These are supported" start="00:12:42.320" video="mainVideo-jupyter" id="subtitle"]] -[[!template new="1" text="and likewise anything in these –" start="00:12:45.360" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="any browser related to these" start="00:12:47.280" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="can probably use these extensions." start="00:12:49.880" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="For example, the Brave browser will use Chrome extension" start="00:12:53.080" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and the Firefox browser extension works with WaterFox." start="00:12:56.360" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="These are the supported editors." start="00:13:01.680" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Each editor has its own extension" start="00:13:05.240" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and this GhostText was initially developed for SublimeText." start="00:13:10.200" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So if you have SublimeText," start="00:13:15.720" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="then you can use its smooth operation as positive control" start="00:13:17.920" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="when things go wrong with Emacs." start="00:13:21.960" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="This is Atomic. This is a GitHub site for Atomic Chrome." start="00:13:25.000" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Atomic Chrome is available for installation through Melpa." start="00:13:29.480" video="mainVideo-jupyter" id="subtitle"]] -[[!template new="1" text="This is my configuration for Atomic Chrome." start="00:13:33.160" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So I have this setup so the server starts whenever I log in," start="00:13:40.320" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and I have it set up so that default major mode is Python" start="00:13:45.520" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="to deal with the Jupyter notebooks and Colab notebooks." start="00:13:50.320" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="And then I have major modes" start="00:13:55.560" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="for these other websites defined below." start="00:13:57.720" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="This is a testing site so the developer has made" start="00:13:59.840" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="to help with troubleshooting." start="00:14:06.080" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="He also has a protocol on his website" start="00:14:08.120" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="to follow during troubleshooting." start="00:14:11.160" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So here are some precautions." start="00:14:13.560" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="You'll find that GhostText doesn't work with Pluto." start="00:14:16.640" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Pluto is a new computational notebook" start="00:14:19.080" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="for working with Julia." start="00:14:21.240" video="mainVideo-jupyter" id="subtitle"]] -[[!template new="1" text="My suggestion would be just to run IJulia in Jupyter." start="00:14:23.480" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="It also doesn't work, of course, with RStudio." start="00:14:27.040" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Even though RStudio sort of resembles" start="00:14:32.000" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="a web page, web browser, it's not." start="00:14:35.200" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Of course, you can always run R," start="00:14:39.000" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="as you've just seen, using the IPy kernel." start="00:14:41.360" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="I will also caution you that if you use the Emacs server," start="00:14:48.240" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="you may run into issues" start="00:14:52.240" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="with the server competing with the port 4001." start="00:14:53.520" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So instead, you should probably configure the Emacs server" start="00:14:58.000" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="to use a specific port." start="00:15:01.920" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So far – although I haven't done that myself –" start="00:15:05.000" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="so far, I haven't found any conflicts" start="00:15:07.640" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="with the Org Roam user interface." start="00:15:11.000" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So my conclusions are: GhostText allows you to edit prose" start="00:15:13.480" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="with your favorite major mode" start="00:15:20.920" video="mainVideo-jupyter" id="subtitle"]] -[[!template new="1" text="in the text areas of web pages" start="00:15:24.440" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and in the cells of Jupyter notebooks." start="00:15:28.120" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="This allows you to tap into snippets" start="00:15:31.080" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and thereby save time as you have – probably have –" start="00:15:34.360" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="hopefully got an idea of." start="00:15:37.520" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="I'd like to thank my friends and mentors" start="00:15:39.720" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="who've helped me out during my second year" start="00:15:44.040" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="in my Emacs learning spiral." start="00:15:46.600" video="mainVideo-jupyter" id="subtitle"]] -[[!template new="1" text="These include my local colleagues." start="00:15:49.360" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="We meet once a month in the Oklahoma Data Science Workshop." start="00:15:55.840" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Last July, I gave a presentation about GhostText." start="00:15:58.680" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="And then also my friends at Berlin and Austin Emacs meetups" start="00:16:01.720" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="and in the UK research software engineer" start="00:16:08.360" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Emacs research Slack channel." start="00:16:12.960" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="So I don't attend these every month," start="00:16:17.600" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="but I try to make the meetings as often as I can." start="00:16:18.920" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="Then I'm supported by the following grants," start="00:16:21.440" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="which allow me to spend" start="00:16:25.400" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="at least some time each day in Emacs." start="00:16:28.360" video="mainVideo-jupyter" id="subtitle"]] -[[!template text="I'll be happy to take any questions." start="00:16:30.680" video="mainVideo-jupyter" id="subtitle"]] +[[!template new="1" text="""Hi, my name is Blaine Mooers.""" start="00:00:00.000" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""I'm an associate professor of biochemistry""" start="00:00:03.840" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""at the University of Oklahoma Health Sciences Center""" start="00:00:05.400" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""in Oklahoma City.""" start="00:00:08.200" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""I'm going to talk about the use of Emacs""" start="00:00:09.760" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""to edit live Jupyter notebook cells""" start="00:00:12.000" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""as well as text areas on web pages.""" start="00:00:16.240" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So like a lot of technical workers,""" start="00:00:20.520" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""I find myself having to write prose""" start="00:00:22.520" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""in text areas on web pages,""" start="00:00:24.880" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""as well as working with code""" start="00:00:28.680" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""in Jupyter notebooks and Colab notebooks,""" start="00:00:31.720" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and often I have wished for""" start="00:00:37.000" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""the full power of Emacs while doing so.""" start="00:00:39.320" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Well, now that is possible.""" start="00:00:43.480" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Actually, there are several solutions""" start="00:00:45.320" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""that have been available for some time.""" start="00:00:46.800" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""I'm going to talk about one solution""" start="00:00:49.040" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""that I'm familiar with and has worked out for me.""" start="00:00:50.400" video="mainVideo-jupyter" id="subtitle"]] +[[!template new="1" text="""So this requires the use of two software packages,""" start="00:00:55.320" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""GhostText and Atomic Chrome.""" start="00:00:58.120" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""GhostText is an extension for the web browser,""" start="00:01:01.600" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""whereas Atomic Chrome is a package for Emacs.""" start="00:01:04.240" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""You have to have both of these.""" start="00:01:07.280" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So Chrome is for the editor side""" start="00:01:10.880" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and GhostText handles the browser side.""" start="00:01:13.400" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""The GhostText extension is available""" start="00:01:18.920" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""in the Chrome web store.""" start="00:01:22.480" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""And GhostText is represented by this icon,""" start="00:01:26.800" video="mainVideo-jupyter" id="subtitle"]] +[[!template new="1" text="""which has a ghost in front of the capital letter T.""" start="00:01:29.520" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""It is being developed by Federico Brigante.""" start="00:01:31.520" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""He is a very prolific JavaScript developer.""" start="00:01:36.400" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""He has a web page committed to GhostText,""" start="00:01:41.240" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""as well as a GitHub site.""" start="00:01:44.280" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So here's an example of GhostText.""" start="00:01:47.200" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""This is a snapshot from a session""" start="00:01:50.160" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""that I had while editing LaTeX on the Overleaf website.""" start="00:01:54.840" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Overleaf is this web service""" start="00:02:01.280" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""that empowers the editing of LaTeX documents on the web.""" start="00:02:03.760" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So I have clicked on this GhostText icon in the toolbar.""" start="00:02:09.720" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""I had already opened up Emacs,""" start="00:02:14.040" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and I had the Atomic Chrome server running.""" start="00:02:17.040" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So a connection was established,""" start="00:02:19.880" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""as indicated by this blue border around this text area.""" start="00:02:21.800" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""And as soon as that appeared,""" start="00:02:28.600" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""the text appeared in a buffer inside of Emacs.""" start="00:02:30.520" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So I have overlaid the area where normally the compiled PDF""" start="00:02:35.320" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""would appear in an Overleaf session.""" start="00:02:40.160" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So I'm using a configuration for LaTeX that I developed,""" start="00:02:43.920" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""which is available through the MooersLab GitHub site.""" start="00:02:47.680" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""I also gave a talk about how I use LaTeX in Emacs""" start="00:02:52.160" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""at the Berlin Emacs meetup in August.""" start="00:02:55.920" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""This talk was not recorded,""" start="00:02:58.840" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""but the slides are available on this website.""" start="00:03:00.040" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So I would like to now switch to a little live coding""" start="00:03:05.120" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""to make this a little more interesting.""" start="00:03:09.520" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So I start my day at this other website called 750Words.""" start="00:03:12.360" video="mainVideo-jupyter" id="subtitle"]] +[[!template new="1" text="""This site just takes plain text,""" start="00:03:22.440" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""but I like to write in LaTeX.""" start="00:03:25.280" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So GhostText came to my rescue""" start="00:03:28.560" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""when I started using this everyday last May.""" start="00:03:31.520" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So I clicked on the GhostText icon.""" start="00:03:34.480" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""It highlighted that area in blue.""" start="00:03:37.240" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""There's some boilerplate""" start="00:03:39.760" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""that I like to start my day with.""" start="00:03:41.840" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""I like to get a list of my deadlines""" start="00:03:45.920" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""that are coming up, as shown here,""" start="00:03:50.600" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""for the next several months.""" start="00:03:54.240" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""And then I have landed at this tab stop.""" start="00:03:55.840" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""And so I had issued a tab trigger""" start="00:03:59.400" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""which inserted this almost 50 lines of text""" start="00:04:04.240" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""from a snippet through Yasnippet.""" start="00:04:09.520" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""And then I'll change this text to whatever.""" start="00:04:13.640" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""And then I can hit TAB to move to the next site.""" start="00:04:17.480" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""I was dead tired last night, so I fell asleep at my desk,""" start="00:04:29.280" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and whatever. So I just keep on going""" start="00:04:38.440" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and then hit TAB again and enter my "To Be Done" items.""" start="00:04:42.440" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""And then what I love about Emacs is that""" start="00:04:47.320" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""you can hit C-c C-j to insert a new item and so forth,""" start="00:04:50.240" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""so you can extend the list.""" start="00:04:56.120" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Initially, I just have 10 items.""" start="00:05:03.240" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""I'm going to have more. And on I go,""" start="00:05:05.080" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""using the full power of LaTeX.""" start="00:05:08.840" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So I have configured Atomic Chrome""" start="00:05:12.360" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""so it will recognize this website as a –""" start="00:05:16.120" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""it will open up this website –""" start="00:05:20.000" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""the connection to this website with this buffer""" start="00:05:21.400" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""in the LaTeX major mode. To turn this off,""" start="00:05:26.160" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""we can close – simply just close the buffer""" start="00:05:36.560" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and that will shut things down.""" start="00:05:40.320" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""On the browser side, you can right-click on the icon""" start="00:05:42.960" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and disconnect GhostText on this page.""" start="00:05:46.400" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Okay, let's go to a different situation.""" start="00:05:49.040" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""This is not a feature that's advertised by the developer,""" start="00:05:53.640" video="mainVideo-jupyter" id="subtitle"]] +[[!template new="1" text="""but I discovered that you can edit code cells""" start="00:05:57.360" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""(or any kind of cell for that matter)""" start="00:06:00.120" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""in a Jupyter Notebook.""" start="00:06:02.800" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""However, we have a challenge here.""" start="00:06:04.440" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""We have three text areas open – three code cells.""" start="00:06:05.720" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So if we click on the GhostText icon,""" start="00:06:09.320" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""these three areas will show up in green""" start="00:06:14.760" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and we'll be prompted to select the one""" start="00:06:17.480" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""that we want to activate.""" start="00:06:19.120" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""We want to activate the one with text.""" start="00:06:20.280" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So then we can go in here and make edits, of course,""" start="00:06:22.360" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and you can do this in Emacs""" start="00:06:31.400" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""or we can do it in the browser. It doesn't matter.""" start="00:06:33.360" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""You saw me editing in Emacs,""" start="00:06:35.640" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""but we can also make the edits""" start="00:06:38.360" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""in the text area of the browser""" start="00:06:40.360" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and they will show up immediately in Emacs.""" start="00:06:44.880" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So we could change the case of that M and that's going to –""" start="00:06:47.520" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""shows up over here. Okay, we can run this code.""" start="00:06:54.440" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So this is R, one of the three major""" start="00:06:59.280" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""programming languages for data science.""" start="00:07:03.440" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""At least, Jupyter is supposed to be""" start="00:07:05.160" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""a combination of Julia, Python, and R.""" start="00:07:07.320" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So we're running mcmc to get the posterior distribution""" start="00:07:13.480" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and we're going to plot those out with this pyplots package,""" start="00:07:17.560" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and we have these beautiful plots showing the median""" start="00:07:21.120" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""of the posterior distribution for four variables in –""" start="00:07:24.080" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""four parameters in the CARS data set,""" start="00:07:27.040" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""which is available – built into the R package.""" start="00:07:31.560" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""And then these shaded areas are the 80% interval.""" start="00:07:38.040" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Okay. Oops.""" start="00:07:45.560" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So now for the Python side,""" start="00:07:49.160" video="mainVideo-jupyter" id="subtitle"]] +[[!template new="1" text="""here's an example in which I'm going to actually""" start="00:08:07.640" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""insert a snippet of that cell""" start="00:08:13.360" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and then I'm going to enter nvlig for nglview ligand,""" start="00:08:18.680" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and just hit enter. Oops. Hit TAB, excuse me,""" start="00:08:27.280" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and we don't need this line of code, so delete that.""" start="00:08:43.320" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Yep, we want to load up this pdb file""" start="00:08:48.000" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""that's in this subdirectory.""" start="00:08:52.200" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So the pdb file is a plain text file""" start="00:08:54.280" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""that contains atomic coordinates""" start="00:08:56.920" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""of protein crystal structure.""" start="00:08:58.840" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""This protein happens to be important in cancer""" start="00:09:00.160" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and we have – we screened by docking 55,000 compounds""" start="00:09:03.000" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""on a supercomputer""" start="00:09:09.080" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and then we did MD [molecular dynamics] simulations""" start="00:09:10.680" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""of the top 10 [actually 20] leads.""" start="00:09:12.744" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Twelve of them had the compound remain bound""" start="00:09:14.160" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""during the period of the simulation,""" start="00:09:18.320" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""so those have some potential for –""" start="00:09:19.680" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and require experimental validation.""" start="00:09:22.560" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So we'll run this chunk of code,""" start="00:09:25.160" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and this will give a view of the molecule""" start="00:09:28.640" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""that we can interact with by using the mouse.""" start="00:09:30.840" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""But I want to share this with my colleague.""" start="00:09:36.480" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""My colleague is not set up to use Jupyter,""" start="00:09:39.880" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""but instead we can write this out to a HTML file,""" start="00:09:42.920" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""which I have loaded up already.""" start="00:09:46.960" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""And so we can actually – perhaps.""" start="00:09:48.320" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""We click on these two arrows pointing at each other,""" start="00:09:55.320" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and we can get a full screen view of this molecule""" start="00:10:01.680" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and he can identify each atom in this structure.""" start="00:10:05.160" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Over a thousand atoms present.""" start="00:10:10.440" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""We're just hovering over a specific atom.""" start="00:10:12.720" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So shown in gray is the ligand that is bound. Okay.""" start="00:10:14.960" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So we still have this box selected""" start="00:10:27.760" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and we still have these two different –""" start="00:10:32.080" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""so for each of the – our selected text areas""" start="00:10:36.560" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""we have a separate – we have a separate buffer open. Okay.""" start="00:10:40.520" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""To wrap things up here, here's an example of using –""" start="00:11:03.840" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""with evolving Julia code.""" start="00:11:06.840" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""And so this Julia code in this cell is in a Emacs buffer.""" start="00:11:08.920" video="mainVideo-jupyter" id="subtitle"]] +[[!template new="1" text="""So you've got an idea now, I think.""" start="00:11:12.920" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So in terms of plain text areas like in Overleaf""" start="00:11:19.280" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and then these cells in Jupyter Notebooks,""" start="00:11:23.760" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""these are other areas that can be edited""" start="00:11:27.520" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""like in the text areas within Outlook Webmail and Gmail.""" start="00:11:30.960" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Instead of having to point with the mouse""" start="00:11:37.920" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""or click with the mouse,""" start="00:11:42.640" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""one can also use keybindings or keyboard shortcuts.""" start="00:11:43.520" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So here are the ones for three major operating systems.""" start="00:11:48.080" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So how does GhostText work?""" start="00:11:51.600" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Main thing is you have to open up Emacs""" start="00:11:54.640" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and get this Atomic Chrome server running.""" start="00:11:57.200" video="mainVideo-jupyter" id="subtitle"]] +[[!template new="1" text="""And then with it up and going,""" start="00:11:59.680" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""GhostText will be able to – has to be activated""" start="00:12:03.120" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and it will find the GhostText server""" start="00:12:06.680" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""through the localhost port 4001.""" start="00:12:09.640" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Put that into the web browser.""" start="00:12:15.080" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""If you navigate to that port,""" start="00:12:19.040" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""you'll get output that looks like this""" start="00:12:21.640" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""if everything's working well.""" start="00:12:23.720" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Otherwise, you'll get a error message""" start="00:12:25.640" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and it should have a port socket –""" start="00:12:27.920" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""a web socket port number.""" start="00:12:30.520" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""It will not be the same every time.""" start="00:12:34.320" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So these are the supported web browsers""" start="00:12:36.320" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""in addition to Chrome. These are supported""" start="00:12:42.320" video="mainVideo-jupyter" id="subtitle"]] +[[!template new="1" text="""and likewise anything in these –""" start="00:12:45.360" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""any browser related to these""" start="00:12:47.280" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""can probably use these extensions.""" start="00:12:49.880" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""For example, the Brave browser will use Chrome extension""" start="00:12:53.080" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and the Firefox browser extension works with WaterFox.""" start="00:12:56.360" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""These are the supported editors.""" start="00:13:01.680" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Each editor has its own extension""" start="00:13:05.240" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and this GhostText was initially developed for SublimeText.""" start="00:13:10.200" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So if you have SublimeText,""" start="00:13:15.720" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""then you can use its smooth operation as positive control""" start="00:13:17.920" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""when things go wrong with Emacs.""" start="00:13:21.960" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""This is Atomic. This is a GitHub site for Atomic Chrome.""" start="00:13:25.000" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Atomic Chrome is available for installation through Melpa.""" start="00:13:29.480" video="mainVideo-jupyter" id="subtitle"]] +[[!template new="1" text="""This is my configuration for Atomic Chrome.""" start="00:13:33.160" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So I have this setup so the server starts whenever I log in,""" start="00:13:40.320" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and I have it set up so that default major mode is Python""" start="00:13:45.520" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""to deal with the Jupyter notebooks and Colab notebooks.""" start="00:13:50.320" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""And then I have major modes""" start="00:13:55.560" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""for these other websites defined below.""" start="00:13:57.720" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""This is a testing site so the developer has made""" start="00:13:59.840" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""to help with troubleshooting.""" start="00:14:06.080" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""He also has a protocol on his website""" start="00:14:08.120" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""to follow during troubleshooting.""" start="00:14:11.160" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So here are some precautions.""" start="00:14:13.560" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""You'll find that GhostText doesn't work with Pluto.""" start="00:14:16.640" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Pluto is a new computational notebook""" start="00:14:19.080" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""for working with Julia.""" start="00:14:21.240" video="mainVideo-jupyter" id="subtitle"]] +[[!template new="1" text="""My suggestion would be just to run IJulia in Jupyter.""" start="00:14:23.480" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""It also doesn't work, of course, with RStudio.""" start="00:14:27.040" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Even though RStudio sort of resembles""" start="00:14:32.000" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""a web page, web browser, it's not.""" start="00:14:35.200" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Of course, you can always run R,""" start="00:14:39.000" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""as you've just seen, using the IPy kernel.""" start="00:14:41.360" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""I will also caution you that if you use the Emacs server,""" start="00:14:48.240" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""you may run into issues""" start="00:14:52.240" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""with the server competing with the port 4001.""" start="00:14:53.520" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So instead, you should probably configure the Emacs server""" start="00:14:58.000" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""to use a specific port.""" start="00:15:01.920" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So far – although I haven't done that myself –""" start="00:15:05.000" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""so far, I haven't found any conflicts""" start="00:15:07.640" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""with the Org Roam user interface.""" start="00:15:11.000" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So my conclusions are: GhostText allows you to edit prose""" start="00:15:13.480" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""with your favorite major mode""" start="00:15:20.920" video="mainVideo-jupyter" id="subtitle"]] +[[!template new="1" text="""in the text areas of web pages""" start="00:15:24.440" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and in the cells of Jupyter notebooks.""" start="00:15:28.120" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""This allows you to tap into snippets""" start="00:15:31.080" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and thereby save time as you have – probably have –""" start="00:15:34.360" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""hopefully got an idea of.""" start="00:15:37.520" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""I'd like to thank my friends and mentors""" start="00:15:39.720" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""who've helped me out during my second year""" start="00:15:44.040" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""in my Emacs learning spiral.""" start="00:15:46.600" video="mainVideo-jupyter" id="subtitle"]] +[[!template new="1" text="""These include my local colleagues.""" start="00:15:49.360" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""We meet once a month in the Oklahoma Data Science Workshop.""" start="00:15:55.840" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Last July, I gave a presentation about GhostText.""" start="00:15:58.680" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""And then also my friends at Berlin and Austin Emacs meetups""" start="00:16:01.720" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""and in the UK research software engineer""" start="00:16:08.360" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Emacs research Slack channel.""" start="00:16:12.960" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""So I don't attend these every month,""" start="00:16:17.600" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""but I try to make the meetings as often as I can.""" start="00:16:18.920" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""Then I'm supported by the following grants,""" start="00:16:21.440" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""which allow me to spend""" start="00:16:25.400" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""at least some time each day in Emacs.""" start="00:16:28.360" video="mainVideo-jupyter" id="subtitle"]] +[[!template text="""I'll be happy to take any questions.""" start="00:16:30.680" video="mainVideo-jupyter" id="subtitle"]] + +Captioner: sachac Questions or comments? Please e-mail [Blaine-Mooers@ouhsc.edu](mailto:Blaine-Mooers@ouhsc.edu?subject=Comment%20for%20EmacsConf%202022%20jupyter%3A%20Edit%20live%20Jupyter%20notebook%20cells%20with%20Emacs) diff --git a/2022/info/jupyter-before.md b/2022/info/jupyter-before.md index 17be9d31..e521cfac 100644 --- a/2022/info/jupyter-before.md +++ b/2022/info/jupyter-before.md @@ -3,18 +3,18 @@ In this talk, Blaine Mooers shows how to use GhostText and Atomic Chrome to edit The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="jupyter"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect stroke-width="3" x="635" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect stroke-width="3" x="635" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] -Format: 18-min talk followed by live Q&A (<https://emacsconf.org/current/jupyter/room>) +Format: 18-min talk followed by live Q&A (done) Etherpad: <https://pad.emacsconf.org/2022-jupyter> Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A open for participation -<div>Times in different timezones:</div><div class="times" start="2022-12-03T20:45:00Z" end="2022-12-03T21:05:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~3:45 PM - 4:05 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~2:45 PM - 3:05 PM CST (US/Central)<br />Saturday, Dec 3 2022, ~1:45 PM - 2:05 PM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~12:45 PM - 1:05 PM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~8:45 PM - 9:05 PM UTC <br />Saturday, Dec 3 2022, ~9:45 PM - 10:05 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~10:45 PM - 11:05 PM EET (Europe/Athens)<br />Sunday, Dec 4 2022, ~2:15 AM - 2:35 AM IST (Asia/Kolkata)<br />Sunday, Dec 4 2022, ~4:45 AM - 5:05 AM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~5:45 AM - 6:05 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/gen/">Find out how to watch and participate</a></div> +Status: Q&A finished, IRC and pad will be archived on this page + [[!template id="vid" vidid="jupyter-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-jupyter--edit-live-jupyter-notebook-cells-with-emacs--blaine-mooers--main.webm" poster="https://media.emacsconf.org/2022/emacsconf-2022-jupyter--edit-live-jupyter-notebook-cells-with-emacs--blaine-mooers--main.png" captions="""<track label="English" kind="captions" srclang="en" src="/2022/captions/emacsconf-2022-jupyter--edit-live-jupyter-notebook-cells-with-emacs--blaine-mooers--main.vtt" default />""" -size="64M" duration="17:08" other_resources="""[Download --main.webm (64MB)](https://media.emacsconf.org/2022/emacsconf-2022-jupyter--edit-live-jupyter-notebook-cells-with-emacs--blaine-mooers--main.webm) +size="64M" duration="17:08" other_resources="""[Download --main.webm (62MB)](https://media.emacsconf.org/2022/emacsconf-2022-jupyter--edit-live-jupyter-notebook-cells-with-emacs--blaine-mooers--main.webm) [Download --main.vtt](https://media.emacsconf.org/2022/emacsconf-2022-jupyter--edit-live-jupyter-notebook-cells-with-emacs--blaine-mooers--main.vtt) [Download --main--chapters.vtt](https://media.emacsconf.org/2022/emacsconf-2022-jupyter--edit-live-jupyter-notebook-cells-with-emacs--blaine-mooers--main--chapters.vtt) [View transcript](https://emacsconf.org/2022/talks/jupyter#jupyter-mainVideo-transcript) diff --git a/2022/info/justl-before.md b/2022/info/justl-before.md index 7c6c9f8f..a713b8b0 100644 --- a/2022/info/justl-before.md +++ b/2022/info/justl-before.md @@ -3,7 +3,7 @@ In this talk, Sibi Prabakaran shares how to use justl to run justfile tasks from The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="justl"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect stroke-width="3" x="172" y="75" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect stroke-width="3" x="172" y="75" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/localizing-before.md b/2022/info/localizing-before.md index 677aff25..66682306 100644 --- a/2022/info/localizing-before.md +++ b/2022/info/localizing-before.md @@ -1,14 +1,14 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="localizing"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect stroke-width="3" x="658" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect stroke-width="3" x="658" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] -Format: 10-min talk followed by live Q&A (<https://emacsconf.org/current/localizing/room>) +Format: 11-min talk followed by live Q&A (<https://emacsconf.org/current/localizing/room>) Etherpad: <https://pad.emacsconf.org/2022-localizing> Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Waiting for video from speaker +Status: Processing uploaded video <div>Times in different timezones:</div><div class="times" start="2022-12-04T21:00:00Z" end="2022-12-04T21:10:00Z"><div class="conf-time">Sunday, Dec 4 2022, ~4:00 PM - 4:10 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 4 2022, ~3:00 PM - 3:10 PM CST (US/Central)<br />Sunday, Dec 4 2022, ~2:00 PM - 2:10 PM MST (US/Mountain)<br />Sunday, Dec 4 2022, ~1:00 PM - 1:10 PM PST (US/Pacific)<br />Sunday, Dec 4 2022, ~9:00 PM - 9:10 PM UTC <br />Sunday, Dec 4 2022, ~10:00 PM - 10:10 PM CET (Europe/Paris)<br />Sunday, Dec 4 2022, ~11:00 PM - 11:10 PM EET (Europe/Athens)<br />Monday, Dec 5 2022, ~2:30 AM - 2:40 AM IST (Asia/Kolkata)<br />Monday, Dec 5 2022, ~5:00 AM - 5:10 AM +08 (Asia/Singapore)<br />Monday, Dec 5 2022, ~6:00 AM - 6:10 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/dev/">Find out how to watch and participate</a></div> diff --git a/2022/info/lspbridge-after.md b/2022/info/lspbridge-after.md index bb7c09fe..848d11a0 100644 --- a/2022/info/lspbridge-after.md +++ b/2022/info/lspbridge-after.md @@ -1,6 +1,331 @@ <!-- Automatically generated by emacsconf-publish-after-page --> +<a name="lspbridge-mainVideo-transcript"></a> +# Transcript + +[[!template text="""Good morning folks, I'm Matthew.""" start="00:00:00.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Welcome to another year of EmacsConf.""" start="00:00:04.640" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""It's looking fantastic this year.""" start="00:00:07.400" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Firstly, I have to apologize for my voice""" start="00:00:10.320" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and occasional cough today.""" start="00:00:13.560" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""I am currently recovering from a cold,""" start="00:00:15.880" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""hopefully it's not Covid or flu,""" start="00:00:18.040" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""so please bear with me today.""" start="00:00:21.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Actually, this talk was supposed to be brought to you""" start="00:00:24.720" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""by Manatee Lazycat, the author of lsp-bridge.""" start="00:00:27.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""But verbal English isn't Lazycat's strongest skill,""" start="00:00:31.560" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and we are good friends as we maintain""" start="00:00:36.080" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""the Emacs Application Framework together,""" start="00:00:38.600" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""so here I am today presenting to you this package.""" start="00:00:41.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Welcome to my talk on lsp-bridge:""" start="00:00:46.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""a smooth-as-butter asynchronous LSP client.""" start="00:00:48.480" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""What is LSP?""" start="00:00:50.321" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""The first question is, what is LSP?""" start="00:00:57.201" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""For anyone who doesn't know here,""" start="00:01:01.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""LSP stands for Language Server Protocol,""" start="00:01:03.200" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""it is a set of protocols defined by Microsoft""" start="00:01:06.800" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""that provides smart features like autocomplete,""" start="00:01:09.720" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""go to definition, documentation, etc.,""" start="00:01:13.400" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""that can be implemented across different editors and IDEs.""" start="00:01:17.600" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""It was initially created""" start="00:01:23.440" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""for their Visual Studio Code product,""" start="00:01:25.560" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""then publically shared with everyone.""" start="00:01:28.400" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""So there are language servers out there""" start="00:01:33.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""that implemented this procotol,""" start="00:01:36.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and editors need to implement the same procotols""" start="00:01:38.120" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""to talk to the language servers""" start="00:01:41.240" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""in order to retrieve necessary information.""" start="00:01:43.120" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Emacs has 2 LSP clients already, the lsp-mode and eglot,""" start="00:01:46.800" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""both implemented the protocols and both are very good.""" start="00:01:53.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Now comes to the second question, of course,""" start="00:02:00.440" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""given lsp-mode and eglot, why another LSP client?""" start="00:02:03.200" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""I used to use lsp-mode all the time,""" start="00:02:09.520" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""I have to say I really appreciate Ivan Yonchovski""" start="00:02:12.360" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and the team's efforts. Also, I'd like to congratuate eglot""" start="00:02:16.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""for making into Emacs 29! These are fantastic packages,""" start="00:02:20.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""they are very mature and robust.""" start="00:02:27.440" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""However, with all due respect, both of the implementation""" start="00:02:31.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""are fundamentally limited""" start="00:02:35.120" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""by the single-threaded nature of Emacs,""" start="00:02:36.720" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""it is neither the fault of lsp-mode nor eglot.""" start="00:02:39.640" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Although in recent years there have been""" start="00:02:46.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""improvements to Emacs core such as native JSON support,""" start="00:02:47.960" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""there are still scenarios where Emacs clog""" start="00:02:51.800" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""for a brief second when processing large amounts of data,""" start="00:02:55.320" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""as Emacs is processing everything in the single thread.""" start="00:02:59.360" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""This problem is especially apparent in some LSP servers""" start="00:03:03.400" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""that feeds in tens of thousands of JSON data""" start="00:03:08.440" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""with every single key press.""" start="00:03:11.840" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Additionally, the large amount of data""" start="00:03:15.200" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""sent by the LSP server, such as the completion candidates,""" start="00:03:17.560" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""the diagnostics and documentation,""" start="00:03:21.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""they are temporarily stored in the Emacs memory,""" start="00:03:23.960" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""which will trigger garbage collection very frequently,""" start="00:03:27.360" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""this also causes stuttering user experience.""" start="00:03:31.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Increasing the gc-cons-threshold helps,""" start="00:03:34.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""but doesn't eliminate the problem.""" start="00:03:37.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""For something like the LSP,""" start="00:03:43.760" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""the language servers need time to compute,""" start="00:03:45.560" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and Emacs needs capacity to process and filter""" start="00:03:48.320" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""all the data coming from the language servers.""" start="00:03:52.360" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""A large codebase project with a slow language server""" start="00:03:55.800" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""that sends tens of thousands of JSON""" start="00:03:59.400" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""will significantly increase the time needed to process it,""" start="00:04:02.440" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""when we don't have a multi-thread,""" start="00:04:06.520" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""the single thread originally allocated for perhaps,""" start="00:04:08.080" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""handling user input will be used to process all the data,""" start="00:04:12.720" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and don't even talk about the garbage collection along the way.""" start="00:04:17.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""The unfortunate truth is that the size of the codebase""" start="00:04:22.720" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and the efficiency of the language server""" start="00:04:26.240" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""is completely out of Emacs' control,""" start="00:04:28.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""it is also out of both the lsp-mode and eglot's control.""" start="00:04:31.760" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""If there's an LSP client""" start="00:04:38.520" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""that can completely eliminate stuttering""" start="00:04:40.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and provide a seamless feedback,""" start="00:04:42.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""that would be great, isn't it?""" start="00:04:45.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""However, we're vaguely talking about speed right now,""" start="00:04:50.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""what is considered fast?""" start="00:04:53.840" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""What is considered seamless?""" start="00:04:56.400" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""What we really mean when we say""" start="00:04:58.360" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""the current LSP implementation is slow?""" start="00:05:01.480" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Let's first look at the problem fundamentally.""" start="00:05:05.240" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""We interact with Emacs through a keyboard,""" start="00:05:12.560" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""so what we perceive as a fast and smooth feedback""" start="00:05:17.680" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""completely depends on how long it takes""" start="00:05:22.720" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""for a keyboard input to display on the Emacs buffer.""" start="00:05:26.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""From a pure graphical perspective,""" start="00:05:29.360" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""we need a minimum of 24 frames per second,""" start="00:05:32.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""the standard in the media industry,""" start="00:05:36.520" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""for us humans to perceive something as seamless.""" start="00:05:39.080" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Say we need 25 frames per second, this means,""" start="00:05:42.360" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""if we divide 1000 milliseconds by 25,""" start="00:05:47.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""we only have approximately 40 millisecond window""" start="00:05:50.400" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""for the response time to spare.""" start="00:05:54.760" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Even if we relax the constraint a bit more,""" start="00:05:57.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""on average a typist takes about 100 to 200 milliseconds""" start="00:06:01.680" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""between typing each character,""" start="00:06:06.680" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""so as long as we see a response within this timeframe,""" start="00:06:09.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""it is tolerable. However, using a slow language server""" start="00:06:12.600" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""on a large codebase easily exceeds""" start="00:06:19.560" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""the hundred millisecond mark,""" start="00:06:22.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and sometimes takes more than 200 milliseconds,""" start="00:06:24.680" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and inevitably will cause an inconsistent delay""" start="00:06:27.480" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""for the end user.""" start="00:06:32.040" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""At this point, someone might want to point out""" start="00:06:33.200" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""that nobody is gonna type at the maximum pace all the time.""" start="00:06:37.960" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""That's right, frankly speaking most of my time""" start="00:06:41.080" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""spent at programming is not writing code,""" start="00:06:45.040" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""but staring at the screen""" start="00:06:47.640" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""thinking about how to write the code.""" start="00:06:49.040" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""However, when we do actually type,""" start="00:06:51.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""maybe only a sentence, a variable name, a keyword,""" start="00:06:55.600" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""or just performing keybinding shortcuts,""" start="00:07:00.360" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""that's when we want to see our input feedback immediately.""" start="00:07:03.040" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""We've already spend so much time""" start="00:07:08.480" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""thinking about how to write,""" start="00:07:10.480" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""we don't want to waste any more time waiting for Emacs""" start="00:07:12.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""to process and show us what we've written""" start="00:07:16.480" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""half a second ago. Otherwise the frustration will build up.""" start="00:07:19.560" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""In the past two years of EmacsConf, I've talked about""" start="00:07:28.400" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""the Emacs Application Framework, a project that extended""" start="00:07:32.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Emacs Lisp to Python, Qt and JavaScript ecosystems.""" start="00:07:35.400" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""The EAF project specializes in improving""" start="00:07:39.840" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""the graphical and multimedia capabilities of Emacs""" start="00:07:43.760" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""through other languages, it was a great success.""" start="00:07:47.440" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""It demonstrated the endless possibilities of Emacs""" start="00:07:51.760" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""by embracing the strengths in other ecosystems.""" start="00:07:55.760" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""If anyone is interested for more information on EAF,""" start="00:08:00.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""please see the EAF repo and refer to my talks""" start="00:08:04.240" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""from EmacsConf2020 and 2021.""" start="00:08:08.520" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""""" start="00:08:12.960" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""The EAF project was created by Manatee Lazycat as well,""" start="00:08:12.960" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""so he thought if there is a way to design""" start="00:08:16.240" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""an LSP client similar to EAF""" start="00:08:20.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""that takes the advantage of Python's multi-threading,""" start="00:08:22.760" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""it will be able to solve our problem.""" start="00:08:25.760" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Conveniently EAF had already done most of the ground work""" start="00:08:27.840" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and demonstrated the possibility""" start="00:08:32.400" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""of cooperating Elisp and Python using the Emacs RPC effectively.""" start="00:08:34.360" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""LSP Bridge has several goals in mind.""" start="00:08:42.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Firstly, performance is the number one priority.""" start="00:08:45.040" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Secondly, use Python multi-threading to bypass""" start="00:08:50.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""the aforementioned bottlenecks of a single-threaded Emacs.""" start="00:08:55.840" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Thirdly, provide a simple solution that requires""" start="00:08:59.240" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""minimal setup for someone who just wants to have""" start="00:09:04.520" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""a fast autocomplete system in Emacs.""" start="00:09:07.520" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""This means, LSP Bridge does not intend""" start="00:09:10.080" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and will not implement the entire LSP protocol,""" start="00:09:16.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""which is a vastly different approach""" start="00:09:21.440" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""than a solution like lsp-mode,""" start="00:09:23.640" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""we do not want to compete this way.""" start="00:09:25.760" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""We also believe some of the LSP Protocol features""" start="00:09:28.480" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""are unnecessary, or we already have better solutions""" start="00:09:33.560" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""in the Emacs ecosystem,""" start="00:09:37.760" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""such as tree-sitter for syntax highlighting.""" start="00:09:38.960" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""So we will not reinvent the wheel.""" start="00:09:42.680" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Ultimately, we want to provide the fastest, butter-smooth""" start="00:09:44.960" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and performant LSP client out of the box.""" start="00:09:50.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Design.""" start="00:09:53.680" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Now let's look at the design architecture diagram.""" start="00:09:54.561" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""As you can see, it is split into""" start="00:10:01.240" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""the top half and bottom half.""" start="00:10:04.640" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""The top is the design for a single file model,""" start="00:10:07.080" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and the bottom half is for project model.""" start="00:10:10.560" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""We make this distinction because we don't want a new user""" start="00:10:13.360" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""to be troubled on choosing a project root directory""" start="00:10:18.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""as the first impression to LSP""" start="00:10:22.600" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""before even start writing code.""" start="00:10:25.200" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""""" start="00:10:27.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""From a new user's perspective,""" start="00:10:27.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""they've just installed this package,""" start="00:10:30.480" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and all they are expecting""" start="00:10:32.960" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""is using a smart autocomplete system,""" start="00:10:35.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""what does root directory even mean in this context?""" start="00:10:37.680" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""So we make the decision for them""" start="00:10:41.520" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""based on whether this file is part of a git repository.""" start="00:10:44.120" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Often times we write code in its own standalone file,""" start="00:10:48.200" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""this is extremely common for scripting languages""" start="00:10:56.720" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""like bash or python. So in the single file model,""" start="00:10:59.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""LSP Bridge will start a dedicated LSP server""" start="00:11:03.320" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""for this particular file based on file type,""" start="00:11:07.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and every file corresponds to a LSP server,""" start="00:11:10.320" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""so each server doesn't interfere with one another.""" start="00:11:13.480" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""The project model will have every file of the same type""" start="00:11:17.840" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""under the same project share one server.""" start="00:11:23.720" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""We believe this is a positive trade-off for user experience.""" start="00:11:25.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""""" start="00:11:30.440" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""LSP Bridge internally implemented two main threads,""" start="00:11:30.440" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""one is the Request Thread, the other is Response Thread.""" start="00:11:36.600" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""The Request Thread is used to handle all the requests""" start="00:11:40.400" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""coming from Emacs, it does not answer immediately,""" start="00:11:45.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""this is important because Emacs doesn't need to wait""" start="00:11:48.680" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""for any response under any reason,""" start="00:11:52.840" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""even if the server is buggy or died out,""" start="00:11:54.680" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""it shouldn't matter to the performance of Emacs.""" start="00:11:58.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""The Response Thread is used to handle""" start="00:12:01.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""the response coming from LSP servers.""" start="00:12:04.040" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""After retrieving a response, regardless of the JSON size,""" start="00:12:06.560" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""it sends to its own thread for computation,""" start="00:12:11.240" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""such as candidate filtering and renaming.""" start="00:12:14.440" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Once the computation is finished,""" start="00:12:17.080" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""it will determine if this information is expired,""" start="00:12:20.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""if not, then push it to Emacs.""" start="00:12:23.640" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""""" start="00:12:26.400" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""From the Emacs side, when it receives the LSP information,""" start="00:12:26.400" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""it only needs to determine the course of action,""" start="00:12:31.560" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""either popup completion, jump to definition,""" start="00:12:34.640" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""renaming action, or show references and show documentions.""" start="00:12:39.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""You see, from a user, all LSP Bridge doing""" start="00:12:44.800" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""is these 5 things, the user doesn't need to care about""" start="00:12:49.120" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""anything else like the complicated""" start="00:12:52.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Language Server Protocols.""" start="00:12:54.560" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""""" start="00:12:56.480" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Python side caches heavy data""" start="00:12:56.480" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""such as candidate documentation and diagnostics.""" start="00:13:02.440" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""We process as much server data as possible in Python,""" start="00:13:06.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and only pass to Emacs as little data as possible""" start="00:13:11.080" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""so it doesn't clog the Emacs thread""" start="00:13:15.760" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and triggers garbage collection.""" start="00:13:18.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""""" start="00:13:19.800" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""This design is critical, because all Emacs needs to do""" start="00:13:19.800" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""is sending LSP requests to LSP Bridge,""" start="00:13:24.320" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""it doesn't wait for a response,""" start="00:13:27.040" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""it simply knows what to do *when* there is a response.""" start="00:13:29.440" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""So the user's input immediately displays on the buffer""" start="00:13:33.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""well within the 40 millisecond window,""" start="00:13:37.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and in the mean time, the user can continue to type""" start="00:13:39.560" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""if he doesn't need the help from LSP right away,""" start="00:13:45.200" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""it fundamentally resolves the stuttering problem.""" start="00:13:48.200" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Now I want to talk about acm-mode,""" start="00:13:51.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""which stands for asynchronous completion menu,""" start="00:13:59.080" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""it is a completion framework""" start="00:14:09.600" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""that currently bundled with LSP Bridge""" start="00:14:12.480" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""designed to accomodate for""" start="00:14:15.040" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""the asynchronous nature of LSP servers.""" start="00:14:17.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""It is a replacement for the built-in capf,""" start="00:14:20.400" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""short for completion-at-point-functions,""" start="00:14:26.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""used in almost everywhere""" start="00:14:30.360" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""including company-mode and corfu-mode.""" start="00:14:32.520" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Yes, we unfortunately reinvented a very fundamental wheel.""" start="00:14:35.760" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""No, it wasn't an easy decision.""" start="00:14:40.840" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""However we still believe it's worth it.""" start="00:14:44.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""LSP Bridge initially used company-mode,""" start="00:14:47.880" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""then moved on to corfu-mode for a while,""" start="00:14:53.360" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""but eventually Lazycat determined""" start="00:14:56.120" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""that it is much more painful to write""" start="00:14:59.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""a lot of workaround code to force LSP Bridge""" start="00:15:00.720" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""to handle capf nicely than to just fork Corfu,""" start="00:15:05.680" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""remove all the capf code,""" start="00:15:09.960" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and write a new completion framework from the remainings.""" start="00:15:12.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""""" start="00:15:15.240" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Performance wise, capf requires Emacs to store""" start="00:15:15.240" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""the entire candidate list""" start="00:15:20.720" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""when looking up candidate annotations.""" start="00:15:23.120" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""It needs to search through the entire candidate list first,""" start="00:15:27.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""then use the candidate as a key""" start="00:15:30.640" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""to search for the actual information.""" start="00:15:32.600" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""This entire process will be repeated every time""" start="00:15:34.800" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""when drawing the completion menu.""" start="00:15:38.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""This is truly intensive computing task for Emacs to handle.""" start="00:15:40.680" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""On top of that, the existing capf frameworks assume""" start="00:15:45.200" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""the candidate list, which is retrieved from the LSP server,""" start="00:15:50.520" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""to be ready and finalized in place""" start="00:15:54.280" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""when the completion popup occurred.""" start="00:15:56.840" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""However given the design of LSP Bridge,""" start="00:15:58.720" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Emacs will not sit there and wait for the server response,""" start="00:16:02.120" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""instead the Response Thread may feed Emacs data""" start="00:16:05.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""whenever it's ready. This makes capf almost impossible""" start="00:16:10.440" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""to form a finalized candidate list during popup.""" start="00:16:14.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""""" start="00:16:21.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""The complete reasons regarding why capf is incompatible""" start="00:16:21.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""with the asynchronous nature of LSP servers""" start="00:16:26.080" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""are very complicated and deserves its own talk.""" start="00:16:28.680" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Lazycat wrote an entire blog post detailing his reasonings,""" start="00:16:32.480" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""while Corfu's author Daniel Mendler a.k.a minad""" start="00:16:37.080" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""also done his own investigations and experiments,""" start="00:16:41.000" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and reached a common conclusion.""" start="00:16:44.240" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""For anyone interested, I've pasted the links""" start="00:16:47.240" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""to the corresponding posts here.""" start="00:16:50.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Therefore, keep in mind that LSP Bridge""" start="00:16:52.760" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""can only use acm-mode to work nicely,""" start="00:16:57.400" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""so please disable other completion frameworks""" start="00:16:59.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""like company and corfu before trying LSP Bridge.""" start="00:17:03.360" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""By designing ACM with asynchronous server response in mind,""" start="00:17:07.160" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""this unlocks LSP Bridge project's potential""" start="00:17:14.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""to provide completions from almost any backends.""" start="00:17:18.760" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""ACM has blended all the backends together,""" start="00:17:22.200" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and configured a priority to display""" start="00:17:25.680" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""important completion results like LSP before other backends.""" start="00:17:28.800" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""It can autocomplete LSP, TabNine, Elisp symbols, yasnippets,""" start="00:17:32.840" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""even English dictionaries and much more.""" start="00:17:38.560" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""As long as you have the backends installed,""" start="00:17:41.040" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""they all work out-of-the-box!""" start="00:17:43.960" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Although LSP Bridge is a relatively new package""" start="00:17:46.320" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""with just over 7 months old, it is already a success!""" start="00:17:55.240" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""As of December of 2022, we have 67 contributors""" start="00:18:00.040" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""making more than 1000 commits,""" start="00:18:06.600" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and we reached more than 600 stars on Github!""" start="00:18:08.440" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""LSP Bridge is easily extensible,""" start="00:18:12.680" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""developing a new language backend is very simple too,""" start="00:18:16.360" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""feel free to join us!""" start="00:18:18.880" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""LSP Bridge is another successful example""" start="00:18:20.640" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""of extending Emacs Lisp with Python, and just like EAF,""" start="00:18:25.600" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""it demonstrated the potential Emacs can achieve""" start="00:18:29.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""when we jump out of the Lisp-only world""" start="00:18:33.640" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""and embrace other ecosystems.""" start="00:18:37.040" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Recently Lazycat created a package called blink-search""" start="00:18:39.200" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""that leveraged similar ideas""" start="00:18:43.480" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""but an asynchronous search framework,""" start="00:18:45.680" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""as well as a package called deno-bridge""" start="00:18:48.920" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""that extended Emacs Lisp""" start="00:18:51.240" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""with Deno JavaScript TypeScript runtimes.""" start="00:18:53.120" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Please check it out,""" start="00:18:56.440" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""if consider joining the development too!""" start="00:18:57.560" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""This is the entirety of my presentation, thanks for joining!""" start="00:19:05.200" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""Me and Lazycat will be available""" start="00:19:08.600" video="mainVideo-lspbridge" id="subtitle"]] +[[!template text="""to answer questions on IRC and Etherpad.""" start="00:19:11.320" video="mainVideo-lspbridge" id="subtitle"]] + Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202022%20lspbridge%3A%20lsp-bridge%3A%20a%20smooth-as-butter%20asynchronous%20LSP%20client) diff --git a/2022/info/lspbridge-before.md b/2022/info/lspbridge-before.md index 30da7947..fa80a212 100644 --- a/2022/info/lspbridge-before.md +++ b/2022/info/lspbridge-before.md @@ -1,18 +1,18 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="lspbridge"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect stroke-width="3" x="133" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 3:50- 3:55 Short hyperlinks to Python docs</title> <rect x="643" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(648,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect stroke-width="3" x="133" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] Format: 20-min talk followed by IRC Q&A (<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-org,emacsconf-accessible,emacsconf-gen,emacsconf-dev">#emacsconf-dev</a>) Etherpad: <https://pad.emacsconf.org/2022-lspbridge> Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Now playing on the conference livestream -<div>Times in different timezones:</div><div class="times" start="2022-12-03T15:25:00Z" end="2022-12-03T15:45:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~10:25 AM - 10:45 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~9:25 AM - 9:45 AM CST (US/Central)<br />Saturday, Dec 3 2022, ~8:25 AM - 8:45 AM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~7:25 AM - 7:45 AM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~3:25 PM - 3:45 PM UTC <br />Saturday, Dec 3 2022, ~4:25 PM - 4:45 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~5:25 PM - 5:45 PM EET (Europe/Athens)<br />Saturday, Dec 3 2022, ~8:55 PM - 9:15 PM IST (Asia/Kolkata)<br />Saturday, Dec 3 2022, ~11:25 PM - 11:45 PM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~12:25 AM - 12:45 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/dev/">Find out how to watch and participate</a></div> +Status: Q&A finished, IRC and pad will be archived on this page + [[!template id="vid" vidid="lspbridge-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-lspbridge--lspbridge-a-smooth-as-butter-asynchronous-lsp-client--andy-stewart-matthew-zeng--original.mp4" poster="https://media.emacsconf.org/2022/emacsconf-2022-lspbridge--lspbridge-a-smooth-as-butter-asynchronous-lsp-client--andy-stewart-matthew-zeng--original.png" ${captions} -size="30M" duration="19:20" other_resources="""[Download --main.webm (35MB)](https://media.emacsconf.org/2022/emacsconf-2022-lspbridge--lspbridge-a-smooth-as-butter-asynchronous-lsp-client--andy-stewart-matthew-zeng--main.webm) +size="30M" duration="19:20" other_resources="""[Download --main.webm (34MB)](https://media.emacsconf.org/2022/emacsconf-2022-lspbridge--lspbridge-a-smooth-as-butter-asynchronous-lsp-client--andy-stewart-matthew-zeng--main.webm) [Download --main.org](https://media.emacsconf.org/2022/emacsconf-2022-lspbridge--lspbridge-a-smooth-as-butter-asynchronous-lsp-client--andy-stewart-matthew-zeng--main.org) """]] diff --git a/2022/info/mail-after.md b/2022/info/mail-after.md index 59f66287..fe8c2a06 100644 --- a/2022/info/mail-after.md +++ b/2022/info/mail-after.md @@ -4,574 +4,576 @@ <a name="mail-mainVideo-transcript"></a> # Transcript -[[!template new="1" text="Greetings. Salaam. This is Mohsen Banan. محسن بنان." start="00:00:00.000" video="mainVideo-mail" id="subtitle"]] -[[!template text="I am a software and internet engineer." start="00:00:09.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="I have been interested in email and" start="00:00:12.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="Emacs for a very long time." start="00:00:14.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="My interest in email started with X.400" start="00:00:17.200" video="mainVideo-mail" id="subtitle"]] -[[!template text="and the Red and Blue CCITT books -- circa 1988." start="00:00:21.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="Early on, in the very early 1990s, I jumped ship" start="00:00:27.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="and joined the Internet email movement." start="00:00:32.000" video="mainVideo-mail" id="subtitle"]] -[[!template text="I am the primary author of two mobile email" start="00:00:35.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="related Internet RFCs, RFC-2188 and RFC-2524." start="00:00:38.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="My interest in Emacs started in 1986 --" start="00:00:45.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="It was Emacs version 17 then. By around 1988" start="00:00:49.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="when Emacs version 18 was well in place," start="00:00:54.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="I started living inside of Emacs." start="00:00:58.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="My primary digital environment has been Emacs ever since." start="00:01:01.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="It has been a good life." start="00:01:06.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="It turns out that Emacs and email mix up really well." start="00:01:11.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="Here, in this presentation and in the context of" start="00:01:17.000" video="mainVideo-mail" id="subtitle"]] -[[!template text="Revisiting The Anatomy of Emacs Mail User Agents," start="00:01:21.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="With MARMEE (Multi-Account Resident" start="00:01:26.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="Message Exchange Environment)" start="00:01:30.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="I am offering my thoughts on this topic" start="00:01:33.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="in this Emacs Conference 2022." start="00:01:35.560" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="Long ago, I asked myself:" start="00:01:41.080" video="mainVideo-mail" id="subtitle"]] -[[!template text=""What should my ultimate mail environment be?"" start="00:01:43.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="Over the past 20+ years, I have been exploring" start="00:01:49.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="the concept of the "Ultimate Mail User Agent (MUA)"." start="00:01:52.141" video="mainVideo-mail" id="subtitle"]] -[[!template text="We do care about privacy, autonomy," start="00:01:58.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="morality, ethics, society and philosophy," start="00:02:01.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="so from the get go, proprietary (Haraam) environments" start="00:02:05.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="such as Microsoft Office's Outlook" start="00:02:10.680" video="mainVideo-mail" id="subtitle"]] -[[!template text="and Google Office's Gmail were non-starters for me." start="00:02:14.200" video="mainVideo-mail" id="subtitle"]] -[[!template text="But these are significant realities" start="00:02:20.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="and we need to deal with these realities." start="00:02:23.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="Notice how Microsoft and Google" start="00:02:27.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="have both framed their MUAs in the context of "office"." start="00:02:30.200" video="mainVideo-mail" id="subtitle"]] -[[!template text="That type of framing is correct." start="00:02:36.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="an MUA must be fully integrated" start="00:02:38.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="in the totality of one's digital ecosystem." start="00:02:41.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="So, the Ultimate Mail User Agent" start="00:02:46.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="must be part of the Ultimate Usage Environment" start="00:02:49.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="of the Ultimate Digital Ecosystem." start="00:02:53.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="In the non-proprietary (Halaal) universe, clearly" start="00:02:57.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="the ultimate usage environment is Emacs." start="00:03:02.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="Emacs is today's most potent and convivial" start="00:03:07.200" video="mainVideo-mail" id="subtitle"]] -[[!template text="non-proprietary usage environment." start="00:03:10.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="So, clearly, the ultimate Mail User Agent" start="00:03:15.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="must be an integral part of Emacs." start="00:03:19.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="Having reached that conclusion," start="00:03:22.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="we then need to determine the specifics" start="00:03:24.158" video="mainVideo-mail" id="subtitle"]] -[[!template text="of the shape and the anatomy of Emacs' MUAs." start="00:03:28.125" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="We could have arrived at this conclusion" start="00:03:33.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="from the reverse direction as well." start="00:03:36.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="Zawinski's Law states:" start="00:03:38.240" video="mainVideo-mail" id="subtitle"]] -[[!template text="Every program attempts to expand until it can read mail." start="00:03:41.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="Those programs which cannot so expand" start="00:03:46.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="are replaced by ones which can." start="00:03:49.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="Jamie's point is very simple and obvious." start="00:03:52.680" video="mainVideo-mail" id="subtitle"]] -[[!template text="The "App" that you "live in" all day" start="00:03:56.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="should be your MUA and mail environment." start="00:03:59.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="I ask those who jumped ship, who abandoned Emacs" start="00:04:05.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="in favor of VS Code: What about mail?" start="00:04:09.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="Long ago, Emacs expanded to including MUAs." start="00:04:15.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="In fact there are many Emacs MUAs that you can choose from." start="00:04:21.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="If you are already hip with Emacs And Linux," start="00:04:27.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="you should definitely consider doing email in Emacs." start="00:04:30.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="But if you are not already hip with Emacs," start="00:04:34.640" video="mainVideo-mail" id="subtitle"]] -[[!template text="I mean for new Emacs users, unfortunately," start="00:04:39.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="setting up and using email is not straight forward." start="00:04:43.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="We (I mean, Emacs developers) should work on that!" start="00:04:48.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="Emacs offers a good number of MUAs with" start="00:04:54.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="different characteristics to suit differing tastes." start="00:04:57.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="As of 2022, you can choose from the following MUAs:" start="00:05:01.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="Gnus, VM, WanderLust, Mew, mu4e, notmuch.el, mh-e and Rmail." start="00:05:06.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="Over the years I have tried several of these" start="00:05:15.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="and eventually landed on Gnus." start="00:05:17.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="The relevance column in this table simply and only" start="00:05:20.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="reflects my taste." start="00:05:25.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="Throughout the rest of this presentation, I focus on Gnus." start="00:05:28.080" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="I have 3 types of audiences in mind for this presentation." start="00:05:32.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="First, if you are already using Emacs" start="00:05:36.200" video="mainVideo-mail" id="subtitle"]] -[[!template text="as more than an editor," start="00:05:39.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="it makes good sense for you to also use Emacs as your MUA." start="00:05:42.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="There may well be some relevant information here for you" start="00:05:47.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="in that situation." start="00:05:50.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="Second, for those interested in philosophy of Emacs," start="00:05:52.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="I go on some bigger picture tangents" start="00:05:57.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="that may be of value to you." start="00:06:00.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="Third, I address some Emacs developers with some feedback," start="00:06:02.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="some suggestions, and some requests." start="00:06:08.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="The general model here is that" start="00:06:11.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="we would collectively work towards" start="00:06:14.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="improving what is on the table." start="00:06:17.080" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="When a Mail User Agent is self-contained" start="00:06:19.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="and includes implementation of mail protocols," start="00:06:22.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="we call it a Monolithic-MUA." start="00:06:26.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="Just as it is with the physical mail postal service," start="00:06:29.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="sending mail and receiving mail" start="00:06:33.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="are fundamentally separate activities." start="00:06:36.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="And then there is mail processing." start="00:06:40.640" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="Based on these categorizations," start="00:06:42.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="Emacs has a set of mature libraries" start="00:06:45.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="for composing mail, sending mail, and receiving mail." start="00:06:49.680" video="mainVideo-mail" id="subtitle"]] -[[!template text="These are all independently well-documented" start="00:06:53.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="and are part of the basic emacs Distribution." start="00:06:58.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="Emacs MUAs then use these common libraries" start="00:07:02.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="to process mail (each somewhat differently)." start="00:07:06.240" video="mainVideo-mail" id="subtitle"]] -[[!template text="The primary benefit of the Monolithic-MUA approach" start="00:07:09.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="is that Emacs MUAs then become self-contained" start="00:07:15.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="and therefore multi-platform." start="00:07:19.600" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="But, when it comes to the question of merits of" start="00:07:22.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="implementation of mail protocols in Elisp inside of Emacs," start="00:07:25.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="there is also another approach:" start="00:07:30.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="that of a Split-MUA." start="00:07:33.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="Concept of a split-MUA is that of" start="00:07:36.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="splitting the MUA into two different parts:" start="00:07:40.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="One being the usage environment," start="00:07:44.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="and the other being mail protocols processing." start="00:07:47.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="The interface between these can be either" start="00:07:50.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="direct (the upper box)" start="00:07:54.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="or through protocols (the lower box)." start="00:07:57.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="With Gnus, we primarily use the direct interface." start="00:08:00.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="The split-MUA model has many advantages" start="00:08:05.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="over the monolithic-MUA model." start="00:08:09.640" video="mainVideo-mail" id="subtitle"]] -[[!template text="With Split-MUAs, your messages are local," start="00:08:12.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="you can search them privately" start="00:08:17.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="and access to your email is faster." start="00:08:19.840" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="Gnus can be used as both a Monolithic-MUA" start="00:08:22.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="and also as a Split-MUA." start="00:08:28.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="Gnus and other Emacs MUAs are flexible enough" start="00:08:30.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="to allow you to create your own split-MUA." start="00:08:35.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="For outgoing mail, Gnus can" start="00:08:39.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="invoke a sendmail-like interface program." start="00:08:42.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="For incoming mail, Gnus can access Maildirs directly" start="00:08:45.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="and let other programs imap-retrieve" start="00:08:50.008" video="mainVideo-mail" id="subtitle"]] -[[!template text="and update into maildirs." start="00:08:53.725" video="mainVideo-mail" id="subtitle"]] -[[!template text="You can then search through your maildirs" start="00:08:56.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="locally and privately" start="00:08:59.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="with various mail-oriented search engines," start="00:09:01.375" video="mainVideo-mail" id="subtitle"]] -[[!template text="and many have done so." start="00:09:04.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="For example, what we are seeing on this slide" start="00:09:07.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="is from a 2014 Do It Yourself (DIY) recipe" start="00:09:11.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="that one of our fellow Emacs conference participants," start="00:09:15.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="Adolfo, had published at the mentioned URL." start="00:09:20.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="The recipe in that slide is based on the following tools:" start="00:09:24.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="mbsync, mu, mu4e, and msmtp." start="00:09:29.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="All our choices are different." start="00:09:35.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="There are many such recipes out there on the web." start="00:09:38.280" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="So, here, I don't want to provide" start="00:09:42.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="yet another Emacs Split-MUA recipe." start="00:09:46.200" video="mainVideo-mail" id="subtitle"]] -[[!template text="I want to do more." start="00:09:50.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="Instead, I want to target the contours of the ultimate MUA" start="00:09:51.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="in the non-proprietary universe of digital ecosystems." start="00:09:56.680" video="mainVideo-mail" id="subtitle"]] -[[!template text="But, first, let's take a look at what is" start="00:10:01.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="happening in the proprietary universe." start="00:10:05.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="The 5 big American proprietary tech companies" start="00:10:07.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="(Google, Microsoft, Apple, Facebook and Amazon)" start="00:10:11.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="have created 5 competing enclaves as mostly separate" start="00:10:14.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="and isolated digital ecosystem." start="00:10:20.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="In this slide, I am focusing on the first 3" start="00:10:23.000" video="mainVideo-mail" id="subtitle"]] -[[!template text="and each of their office and email environments." start="00:10:27.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="Let's clearly recognize that the economic model" start="00:10:31.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="of these proprietary digital ecosystems is:" start="00:10:36.320" video="mainVideo-mail" id="subtitle"]] -[[!template text=""Surveillance Capitalism"." start="00:10:40.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="So, when any of us goes there to get" start="00:10:42.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="a free-of-charge email account," start="00:10:45.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="he has chosen to voluntarily forgo much of his privacy." start="00:10:47.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="And many have done so." start="00:10:53.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="Sadly, the rest of the world is becoming" start="00:10:55.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="Americanized through the American Internet." start="00:10:59.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="As of 2022, almost %90 of Facebook's" start="00:11:02.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="daily active users come from outside of the US." start="00:11:08.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="Also, with respect to email, each of the enclaves" start="00:11:11.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="have MUAs that are fully integrated" start="00:11:17.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="in their digital ecosystems" start="00:11:20.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="in the form of an office environment" start="00:11:22.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="comprising of address book, calendar, time management" start="00:11:24.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="and planning tools and multi-lingual authoring" start="00:11:29.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="and various other integrated tools." start="00:11:33.200" video="mainVideo-mail" id="subtitle"]] -[[!template text="Now, let's focus on the right side of this picture." start="00:11:36.240" video="mainVideo-mail" id="subtitle"]] -[[!template text="On the non-proprietary side," start="00:11:40.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="based on the Western FLOSS model," start="00:11:43.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="we have ended up with lots of components." start="00:11:46.240" video="mainVideo-mail" id="subtitle"]] -[[!template text="We have Debian as a platform," start="00:11:49.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="we have Emacs as an editor-centered office environment" start="00:11:52.240" video="mainVideo-mail" id="subtitle"]] -[[!template text="and we have Gnus as an incredibly powerful MUA." start="00:11:58.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="But on the non-proprietary side we don't have anything" start="00:12:03.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="that can reasonably be considered a digital ecosystem." start="00:12:07.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="I mean, the services aspect is missing." start="00:12:12.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="Over the past two decades I have created" start="00:12:16.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="quite an elaborate digital ecosystem for myself." start="00:12:20.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="It is called: By*." start="00:12:24.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="The Libre-Halaal ByStar Digital Ecosystem" start="00:12:26.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="is being built to provide autonomy-oriented services" start="00:12:30.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="on internet scale." start="00:12:35.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="The * in ByStar stands for Unix's globbing symbol," start="00:12:37.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="signifying that our scope is everything." start="00:12:42.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="Notice in this bigger picture that in the red box," start="00:12:46.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="our focus remains to be Emacs, Gnus and the ultimate MUA." start="00:12:52.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="I am not here to sell you ByStar, but perhaps" start="00:12:58.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="you should be in the market for something like that." start="00:13:03.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="We need non-proprietary digital ecosystems." start="00:13:06.240" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="Very briefly, I'll give you" start="00:13:10.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="some pointers to the full ByStar story." start="00:13:13.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="The full ByStar story is a 250 plus pages book titled:" start="00:13:16.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="Nature Of Polyexistentials," start="00:13:23.240" video="mainVideo-mail" id="subtitle"]] -[[!template text="Basis For Abolishment Of" start="00:13:26.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="The Western Intellectual Property Rights Regime," start="00:13:28.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="And Introduction Of" start="00:13:31.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="The Libre-Halaal ByStar Digital Ecosystem." start="00:13:33.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="I have it self-published on my own ByName public web page." start="00:13:36.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="The ByStar story starts with understanding of the" start="00:13:42.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="Nature Of Polyexistentials." start="00:13:46.640" video="mainVideo-mail" id="subtitle"]] -[[!template text="Polyexistentials inherently exist in multiples." start="00:13:48.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="Software is a polyexistential." start="00:13:53.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="Polyexistentials are naturally non-scarce," start="00:13:56.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="and making polyexistential artificially scarce," start="00:14:01.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="which is what the Western" start="00:14:06.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="intellectual property rights regime does," start="00:14:08.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="is counter to nature." start="00:14:11.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="Polyexistentials are unownable" start="00:14:13.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="and should not be considered property." start="00:14:17.640" video="mainVideo-mail" id="subtitle"]] -[[!template text="The Western IPR regime is in conflict with nature." start="00:14:20.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="But, the book is more than just philosophy." start="00:14:25.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="In that book I also cover" start="00:14:29.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="the bigger picture of healthy digital ecosystems" start="00:14:32.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="which also includes the topic of this presentation." start="00:14:35.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="I'd be interested in your thoughts and your feedback," start="00:14:39.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="if you choose to dig deeper." start="00:14:43.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="And if you want to dig deeper, here are some links." start="00:14:45.680" video="mainVideo-mail" id="subtitle"]] -[[!template text="By* is about re-decentralization" start="00:14:51.000" video="mainVideo-mail" id="subtitle"]] -[[!template text="of Internet application services." start="00:14:55.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="Among other things, ByStar provides" start="00:14:57.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="complete own-your-email services. I mean," start="00:15:00.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="private Hillary-Clinton-Style mail servers for everyone." start="00:15:05.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="There is an overview of ByStar at by-star.net." start="00:15:10.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="You may have noticed that I consistently use" start="00:15:16.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="the "Libre-Halaal" label with ByStar." start="00:15:21.200" video="mainVideo-mail" id="subtitle"]] -[[!template text="Halaal is a very sensitive word." start="00:15:25.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="I am a Moslem." start="00:15:28.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="But my use of Halaal is not in a religious context." start="00:15:30.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="It is in a philosphical context." start="00:15:35.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="And the scope of the "Libre-Halaal" label" start="00:15:39.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="is manner-of-existence of Software and Services." start="00:15:42.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="It is not about Halaal-ness with respect to" start="00:15:46.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="function and use of Software and Services." start="00:15:50.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="Unfortunately, the word Halaal" start="00:15:54.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="and the concept of Halaal does not exist in English." start="00:15:58.240" video="mainVideo-mail" id="subtitle"]] -[[!template text="So, first I introduce it into Globish." start="00:16:02.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="I have done so in PLPC-120039." start="00:16:06.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="Further, I explain as to why labels" start="00:16:12.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="of Open Source and Free Software are both ill-directed." start="00:16:18.200" video="mainVideo-mail" id="subtitle"]] -[[!template text="We then carefully define" start="00:16:22.640" video="mainVideo-mail" id="subtitle"]] -[[!template text=""Libre-Halaal Software" and "Libre-Halaal Services"." start="00:16:25.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="Notice that last link." start="00:16:30.000" video="mainVideo-mail" id="subtitle"]] -[[!template text="I bet, this is the first time" start="00:16:33.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="that anyone includes a link to his "Open Business Plan"" start="00:16:36.200" video="mainVideo-mail" id="subtitle"]] -[[!template text="in an Emacs Conference." start="00:16:40.680" video="mainVideo-mail" id="subtitle"]] -[[!template text="I hope others would do this as well." start="00:16:43.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="There is appetite out there" start="00:16:46.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="for privacy- and autonomy-oriented digital ecosystems," start="00:16:49.680" video="mainVideo-mail" id="subtitle"]] -[[!template text="and there is no conflict between honest business," start="00:16:53.640" video="mainVideo-mail" id="subtitle"]] -[[!template text="honest profit, and Libre-Halaal Software" start="00:16:57.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="and Libre-Halaal Services." start="00:17:01.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="The sub-title of our open business plan is:" start="00:17:02.920" video="mainVideo-mail" id="subtitle"]] -[[!template text=""An Inversion to the Proprietary Internet Services Model"." start="00:17:08.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="And here are the same links as a native Reveal slide." start="00:17:12.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="If instead of a video, you are viewing" start="00:17:20.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="this presentation as a Reveal web page," start="00:17:24.680" video="mainVideo-mail" id="subtitle"]] -[[!template text="you can just click on the pointers and URLs." start="00:17:27.400" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="So, what was the point of bringing ByStar" start="00:17:31.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="into this presentation?" start="00:17:36.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="In tangible terms, what have we gotten out of" start="00:17:38.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="the tangent we took on the ByStar bigger picture?" start="00:17:42.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="Of course we have the ByStar Digital Ecosystem itself." start="00:17:45.640" video="mainVideo-mail" id="subtitle"]] -[[!template text="But that is not immediately relevant to this presentation." start="00:17:50.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="Here, through BISOS we now have" start="00:17:54.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="an integration framework, which we definitely needed." start="00:17:59.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="We now have BISOS-MARMEE," start="00:18:04.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="Multi-Account Resident Mail Exchange Environment," start="00:18:07.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="which is a consistent set" start="00:18:11.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="of MUA-related software components --- which we need." start="00:18:13.680" video="mainVideo-mail" id="subtitle"]] -[[!template text="We also needed to augment Emacs in our own terms," start="00:18:17.640" video="mainVideo-mail" id="subtitle"]] -[[!template text="so we have Blee for that," start="00:18:23.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="ByStar Libre-Halaal Emacs Environment," start="00:18:25.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="is ByStar ecosystemized Emacs." start="00:18:29.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="And finally Blee-Gnus, which is" start="00:18:32.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="Gnus and MARMEE integrated with Blee." start="00:18:37.680" video="mainVideo-mail" id="subtitle"]] -[[!template text="With these in place, we can now dive deeper into MARMEE." start="00:18:40.640" video="mainVideo-mail" id="subtitle"]] -[[!template text="The idea of MARMEE, is that of packaging together" start="00:18:46.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="the mail protocols parts of the Split-MUA." start="00:18:53.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="MARMEE (which is of course in the context of BISOS)" start="00:18:56.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="is the green box in this slide." start="00:19:00.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="For outgoing mail, we use an altered qmail." start="00:19:03.680" video="mainVideo-mail" id="subtitle"]] -[[!template text="We will be looking deeper into qmail a bit later." start="00:19:08.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="For incoming mail, we are using offlineimap" start="00:19:12.680" video="mainVideo-mail" id="subtitle"]] -[[!template text="which is oauth2 aware." start="00:19:17.560" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="Before going into more details," start="00:19:20.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="let's take a look at the parts lists for" start="00:19:23.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="BISOS-MARMEE and Blee-Gnus." start="00:19:26.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="MARMEE is a collection of Python-based libraries" start="00:19:29.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="and Debian packages that provide for rich sending" start="00:19:33.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="and receiving of email outside of Emacs." start="00:19:37.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="Here is our BISOS-MARMEE parts list." start="00:19:40.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="MARMEE features include tracked mail Sending" start="00:19:44.240" video="mainVideo-mail" id="subtitle"]] -[[!template text="for confirmed mail communications" start="00:19:48.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="and email distribution facilities" start="00:19:51.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="(say, similar to Constant Contact)." start="00:19:54.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="For Delivery Status Notification (DSN)," start="00:19:57.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="we have adopted flufl.bounce." start="00:20:02.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="I'll be touching on everything that is qmail-related," start="00:20:06.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="namely qmail-remote.cs and mailfront, in a separate slide." start="00:20:10.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="notmuch is our choice of mail search engine." start="00:20:17.320" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="Similarly, here is our Blee-Gnus Parts List." start="00:20:21.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="Blee-Gnus is Gnus and MARMEE integrated with BISOS and Blee." start="00:20:27.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="Notice mentions of org-msg and polymode here." start="00:20:33.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="Later, I'll expand on these in the context of" start="00:20:38.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="transitioning from Message-Mode to Message-Polymode." start="00:20:42.880" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="With these parts in place," start="00:20:47.680" video="mainVideo-mail" id="subtitle"]] -[[!template text="now let's see how they will all come together." start="00:20:52.200" video="mainVideo-mail" id="subtitle"]] -[[!template text="Gnus is very flexible, and in combination with MARMEE," start="00:20:55.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="it can create an incredibly powerful MUA." start="00:21:00.000" video="mainVideo-mail" id="subtitle"]] -[[!template text="On this slide, note the boxes" start="00:21:03.640" video="mainVideo-mail" id="subtitle"]] -[[!template text="that include the FPs label." start="00:21:07.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="FP stand for File Parameters." start="00:21:10.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="It is the basis of BISOS's configuration" start="00:21:14.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="and secrets management." start="00:21:18.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="Notice that it has consistent agents" start="00:21:20.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="inside of Emacs and on the OS." start="00:21:24.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="This is a big deal" start="00:21:27.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="in that it can reduce user visible configuration complexity." start="00:21:29.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="Also, notice the X822-Bus here." start="00:21:34.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="The idea of X822-Bus is that of" start="00:21:39.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="allowing for communication among user's preferences, Gnus" start="00:21:44.000" video="mainVideo-mail" id="subtitle"]] -[[!template text="and MARMEE-qmail through addition of X- fields" start="00:21:49.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="in RFC-822 message headers." start="00:21:53.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="X822-Bus is used for selection of mail sending agents" start="00:21:57.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="and specification of delivery status parameters." start="00:22:03.600" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="Of key significance in this picture" start="00:22:08.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="is our choice of qmail for outgoing mail." start="00:22:12.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="Compared to sendmail, postfix, exim," start="00:22:15.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="and other conventional MTAs;" start="00:22:22.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="the qmail ecosystem is far more flexible and potent." start="00:22:25.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="We are not using qmail as is." start="00:22:31.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="Ours is called bystar-qmail." start="00:22:34.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="When we use it as a traditional MTA," start="00:22:38.000" video="mainVideo-mail" id="subtitle"]] -[[!template text="we refer to it as PALS-qmail." start="00:22:41.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="And when we use it on the MUA side, we call it MARMEE-qmail." start="00:22:45.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="Just like Emacs, qmail has" start="00:22:52.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="a solid core and a flexible periphery." start="00:22:56.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="All our alterations have been on the periphery." start="00:22:59.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="We have replaced qmail-remote" start="00:23:04.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="with our own Python implementation called qmail-remote.cs." start="00:23:07.891" video="mainVideo-mail" id="subtitle"]] -[[!template text="By being in Python, it can do a lot more a lot more easily." start="00:23:14.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="For example, qmail-remote.cs interacts with" start="00:23:20.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="Google Oauth2 APIs and allows you to send through Gmail." start="00:23:26.541" video="mainVideo-mail" id="subtitle"]] -[[!template text="This is shown with the red circle." start="00:23:33.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="We have also replaced qmail-smtpd with mailfront," start="00:23:36.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="shown with a blue circle." start="00:23:43.640" video="mainVideo-mail" id="subtitle"]] -[[!template text="This allows us to use MARMEE Split-MUA" start="00:23:46.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="through protocol interfaces." start="00:23:51.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="Let's take a look at that." start="00:23:54.000" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="Previously we looked at the "Direct Interface" of MARMEE," start="00:23:56.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="specifically, qmail-inject and Maildir for Gnus." start="00:24:02.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="But what if we wanted to use" start="00:24:08.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="MARMEE with other MUAs outside of Emacs?" start="00:24:11.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="That can be done through the "Protocol Interface"." start="00:24:15.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="MARMEE also includes "mailfront"" start="00:24:18.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="which can function as an SMTP submit server for localhost." start="00:24:22.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="This way, we can configure" start="00:24:27.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="the outgoing mail part of any MUA to point to the localhost" start="00:24:30.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="and have MARMEE-qmail function as an outgoing proxy." start="00:24:36.240" video="mainVideo-mail" id="subtitle"]] -[[!template text="For incoming mail, MARMEE-Split-MUA-Protocol-Interface" start="00:24:41.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="includes "Courier", which can function" start="00:24:47.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="as an IMAP server for localhost." start="00:24:51.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="This way, we can configure the incoming mail part" start="00:24:54.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="of any MUA to point to the localhost" start="00:24:58.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="and have MARMEE function as an incoming proxy" start="00:25:02.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="by serving the local Maildir to the MUA." start="00:25:06.520" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="All sources for all of ByStar, BISOS," start="00:25:10.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="Blee and MARMEE are subject to Affero GPL." start="00:25:18.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="The sources and documentation are all republished" start="00:25:23.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="under various "Organizations"" start="00:25:28.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="under github.com/mohsenBanan" start="00:25:30.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="All of ByStar, BISOS, Blee and MARMEE" start="00:25:35.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="reflect work in progress," start="00:25:40.680" video="mainVideo-mail" id="subtitle"]] -[[!template text="and we are NOT recruiting users at this time." start="00:25:42.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="For more than two decades," start="00:25:46.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="I have been using these all in that bigger context." start="00:25:49.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="They are mostly real," start="00:25:53.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="but so far, just for myself and a few other engineers." start="00:25:56.240" video="mainVideo-mail" id="subtitle"]] -[[!template text="Our model is similar to God's early days." start="00:26:01.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="You may ask:" start="00:26:06.520" video="mainVideo-mail" id="subtitle"]] -[[!template text=""How did God create all of this in just 7 days?"" start="00:26:08.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="Well, easy, He did not have an installed base to deal with." start="00:26:12.120" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="You can obtain and install MARMEE in two ways. As is:" start="00:26:17.200" video="mainVideo-mail" id="subtitle"]] -[[!template text="as standalone-MARMEE, you can just" start="00:26:24.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="pip install bisos.marmee." start="00:26:29.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="For the Gnus part you are completely on your own." start="00:26:31.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="Or on a Debian-11, you can just run" start="00:26:35.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="the bisos bootstrap script." start="00:26:40.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="That way you will have all of BISOS, which includes MARMEE" start="00:26:43.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="and you will have Blee, which includes Blee-Gnus." start="00:26:48.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="If you plan to do so," start="00:26:52.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="I suggest that you first try it in a disposable VM." start="00:26:54.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="BISOS and Blee are large." start="00:26:58.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="Many apt and pip packages will be installed!" start="00:27:02.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="And here are the same links as a native Reveal slide." start="00:27:06.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="If you are viewing this presentation as Reveal.js web page," start="00:27:11.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="you can just click on the pointers and URLs." start="00:27:17.520" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="Let's consider MARMEE as an Emacs "Common Agent"." start="00:27:20.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="By "Common-Agent" I mean a capability" start="00:27:25.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="which Emacs builds on" start="00:27:28.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="and which other Apps can also use." start="00:27:30.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="Emacs has a very rich applications development framework" start="00:27:33.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="for absorbing common-agents." start="00:27:38.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="Consider how magit has absorbed git," start="00:27:41.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="or how flycheck has absorbed mypy" start="00:27:45.475" video="mainVideo-mail" id="subtitle"]] -[[!template text="or how EAF does its work outside of Emacs ---" start="00:27:49.775" video="mainVideo-mail" id="subtitle"]] -[[!template text="that too can be considered a common-agent." start="00:27:54.200" video="mainVideo-mail" id="subtitle"]] -[[!template text="The common-agent model permits us" start="00:27:57.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="to do more outside of Emacs." start="00:28:02.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="Common-agents maximize social benefits" start="00:28:04.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="and are more convivial." start="00:28:08.640" video="mainVideo-mail" id="subtitle"]] -[[!template text="For example, any MUA can profit from MARMEE." start="00:28:10.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="But we don't have good ways of" start="00:28:15.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="packaging Emacs and its packages" start="00:28:18.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="with their common-agents." start="00:28:21.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="Instead, we usually end up with DIY recipes." start="00:28:23.640" video="mainVideo-mail" id="subtitle"]] -[[!template text="This is why I am contextualizing" start="00:28:28.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="Emacs inside of Blee and BISOS." start="00:28:32.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="That is what they are for." start="00:28:35.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="And that is why I consider them" start="00:28:38.000" video="mainVideo-mail" id="subtitle"]] -[[!template text="immediately relevant to this presentation." start="00:28:40.425" video="mainVideo-mail" id="subtitle"]] -[[!template text="With an incredibly powerful Display Engine," start="00:28:43.200" video="mainVideo-mail" id="subtitle"]] -[[!template text="and an incredibly powerful Elisp Engine," start="00:28:47.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="and an incredibly powerful Input Methods Engine," start="00:28:51.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="and an incredibly powerful Common-Agents paradigm," start="00:28:55.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="Emacs has the potential of being" start="00:28:59.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="any non-proprietary digital ecosystem's" start="00:29:02.708" video="mainVideo-mail" id="subtitle"]] -[[!template text="preferred usage environment." start="00:29:06.408" video="mainVideo-mail" id="subtitle"]] -[[!template text="I am in favor of putting more around Emacs" start="00:29:08.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="and strengthening integration of Emacs" start="00:29:14.091" video="mainVideo-mail" id="subtitle"]] -[[!template text="with Debian, explicitly," start="00:29:17.441" video="mainVideo-mail" id="subtitle"]] -[[!template text="perhaps even at the cost of" start="00:29:19.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="de-emphasizing its multi-platform attribute." start="00:29:22.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="A smaller Emacs is a better Emacs." start="00:29:26.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="Notice that in this slide," start="00:29:30.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="I have used many arrows in many colors." start="00:29:33.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="Much of Emacs's power comes from its ability" start="00:29:37.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="to absorb and to integrate." start="00:29:45.600" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="Tomohiro is right on the mark when he says," start="00:29:47.760" video="mainVideo-mail" id="subtitle"]] -[[!template text=""The reason why Emacs platform is good" start="00:29:51.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="is that it cooperates with OS," start="00:29:55.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="not because it is good by itself."" start="00:29:58.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="I am suggesting that we should" start="00:30:00.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="raise the bar from the OS" start="00:30:04.000" video="mainVideo-mail" id="subtitle"]] -[[!template text="to the entirety of our digital ecosystem." start="00:30:06.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="There are many models" start="00:30:09.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="for Emacs to cooperate with the OS" start="00:30:13.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="and with applications and with services." start="00:30:15.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="The colors of arrows in the previous slide correspond to" start="00:30:19.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="the model of interface of the common-agent:" start="00:30:25.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="for example, sub-process invocation, pipe-based" start="00:30:28.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="asynchronous interface, or file-based interactions." start="00:30:34.000" video="mainVideo-mail" id="subtitle"]] -[[!template text="One important aspect of common-agent paradigm is that" start="00:30:39.360" video="mainVideo-mail" id="subtitle"]] -[[!template text="both the common-agent and its Emacs App" start="00:30:44.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="need to be configured consistently." start="00:30:50.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="In MARMEE and Blee-Gnus," start="00:30:53.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="we use File-Params to accomplish this." start="00:30:57.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="In BISOS, there is a Python interface to File-Params," start="00:31:01.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="there is a Bash interface to File-Params," start="00:31:06.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="and in Blee, there is an Elisp interface to File-Params." start="00:31:10.240" video="mainVideo-mail" id="subtitle"]] -[[!template text="So, configurations are extended." start="00:31:15.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="Furthermore, File-Params can be encrypted," start="00:31:18.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="and credentials can be protected and shared." start="00:31:23.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="This is a significant improvement over .authinfo" start="00:31:26.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="and its more recent incarnations." start="00:31:33.920" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="EmacsConf could be a great place" start="00:31:36.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="for users to provide feedback to developers" start="00:31:41.200" video="mainVideo-mail" id="subtitle"]] -[[!template text="and for developers to suggest to developers." start="00:31:44.375" video="mainVideo-mail" id="subtitle"]] -[[!template text="In that spirit, my primary audience in this part" start="00:31:47.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="are fellow Emacs developers." start="00:31:52.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="BISOS-MARMEE and Blee-Gnus are starting points." start="00:31:54.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="We can collectively work" start="00:32:00.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="towards improving what is in place." start="00:32:02.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="Some such improvements involve" start="00:32:04.680" video="mainVideo-mail" id="subtitle"]] -[[!template text="collaboration among various Emacs developers." start="00:32:07.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="Here, I am making some explicit requests" start="00:32:11.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="from some of the relevant emacs developers." start="00:32:16.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="At most, these are requests and invitations." start="00:32:19.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="For each of these requests, I am providing links" start="00:32:24.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="for additional details." start="00:32:28.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="In due course, I'll follow up" start="00:32:30.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="in the Emacs developers mailing list." start="00:32:33.040" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="Gnus uses X-Message-SMTP-Method" start="00:32:35.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="for selection of Mail-Sending-Agent." start="00:32:41.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="Even though all the qmail injection code is still in Gnus," start="00:32:45.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="support for "X-Message-SMTP-Method: qmail" is missing." start="00:32:50.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="It takes 2 lines of code to revive it." start="00:32:58.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="With regards to (1), qmail was previously supported in Gnus." start="00:33:02.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="Lars, can you please reactivate it? Thanks." start="00:33:07.400" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="(2) is a terminology suggestion." start="00:33:11.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="The term X-Message-SMTP-Method violates conceptual layering." start="00:33:16.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="Please consider changing it to X-Message-Send-Method." start="00:33:21.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="In a Split-MUA setup, Gnus need not know about SMTP at all." start="00:33:27.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="We just need to pass information" start="00:33:33.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="to a Mail-Sending-Agent selector." start="00:33:36.600" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="(3) is simply a design suggestion for" start="00:33:39.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="which I prepared the context." start="00:33:44.440" video="mainVideo-mail" id="subtitle"]] -[[!template text=".authinfo and Emacs auth-source library" start="00:33:46.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="are too Emacs-centric." start="00:33:51.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="We need to share config info and secrets" start="00:33:54.200" video="mainVideo-mail" id="subtitle"]] -[[!template text="between common-agents and Emacs." start="00:33:57.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="The File Parameters approach" start="00:34:00.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="can be a general-purpose solution." start="00:34:03.640" video="mainVideo-mail" id="subtitle"]] -[[!template text="Is it reasonable to extend auth-source library to" start="00:34:05.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="support File Params?" start="00:34:10.840" video="mainVideo-mail" id="subtitle"]] -[[!template text="I'll cover (4) in the next slide." start="00:34:12.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="(5) is a philosophical common suggestion" start="00:34:16.520" video="mainVideo-mail" id="subtitle"]] -[[!template text="to all Emacs developers. We need to better cultivate" start="00:34:21.160" video="mainVideo-mail" id="subtitle"]] -[[!template text="the model of Common-Agents integration with Emacs." start="00:34:26.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="And here are the same links as a native Reveal slide." start="00:34:30.880" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="A mail message comprises of" start="00:34:39.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="Envelope, Header and BodyParts." start="00:34:42.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="Each of these have their own syntax (their own mode)." start="00:34:45.600" video="mainVideo-mail" id="subtitle"]] -[[!template text="Conceivably Each BodyPart has its own mode." start="00:34:49.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="So, we need to evolve Message-Mode into Message-Polymode." start="00:34:53.640" video="mainVideo-mail" id="subtitle"]] -[[!template text="More or less by default, org-mode has become" start="00:34:59.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="the beginnings of "Emacs Native Markup Language -- ENML"." start="00:35:03.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="With org-msg you can write your emails in org-mode ---" start="00:35:09.000" video="mainVideo-mail" id="subtitle"]] -[[!template text="destined as html." start="00:35:14.400" video="mainVideo-mail" id="subtitle"]] -[[!template text="org-msg needs to become" start="00:35:16.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="an integral part of Message-Polymode." start="00:35:19.560" video="mainVideo-mail" id="subtitle"]] -[[!template text="It would be heavenly" start="00:35:22.240" video="mainVideo-mail" id="subtitle"]] -[[!template text="if Lars, Jérémy and Vitalie could collaborate" start="00:35:25.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="and give us the needed Message-Polymode. Thank you." start="00:35:29.960" video="mainVideo-mail" id="subtitle"]] -[[!template new="1" text="One way to verify that we have not gone astray" start="00:35:34.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="in our horizontal bigger pictures is to verify them" start="00:35:38.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="through the concept of "Vertical Slice Use Cases"." start="00:35:42.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="Let one use case be reading and writing" start="00:35:46.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="of mail on multiple gmail accounts with Gnus." start="00:35:50.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="Google now requires use of oauth2 tokens" start="00:35:54.640" video="mainVideo-mail" id="subtitle"]] -[[!template text="which MARMEE can do outside of emacs." start="00:35:59.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="There is a recent email thread" start="00:36:02.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="on that in the emacs-devel mailing list." start="00:36:05.680" video="mainVideo-mail" id="subtitle"]] -[[!template text="Let another use case be that of tracking delivery" start="00:36:09.120" video="mainVideo-mail" id="subtitle"]] -[[!template text="and non-delivery reports for custom envelope addresses" start="00:36:14.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="of byname.net (part of ByStar) autonomous mail services." start="00:36:18.680" video="mainVideo-mail" id="subtitle"]] -[[!template text="I would have loved to walk you through these" start="00:36:26.040" video="mainVideo-mail" id="subtitle"]] -[[!template text="vertical slice use cases" start="00:36:30.320" video="mainVideo-mail" id="subtitle"]] -[[!template text="as screen captures of my Blee environment." start="00:36:32.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="For that, I need at least another 20 minutes." start="00:36:36.440" video="mainVideo-mail" id="subtitle"]] -[[!template text="But my time is up." start="00:36:40.640" video="mainVideo-mail" id="subtitle"]] -[[!template text="So, let's consider this as the first" start="00:36:43.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="in a series of presentations" start="00:36:46.720" video="mainVideo-mail" id="subtitle"]] -[[!template text="where next in this series could be" start="00:36:48.920" video="mainVideo-mail" id="subtitle"]] -[[!template text="the mentioned two vertical slice use cases." start="00:36:51.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="Perhaps there could be another presentation" start="00:36:55.480" video="mainVideo-mail" id="subtitle"]] -[[!template text="on this topic in EmacsConf 2023." start="00:36:59.280" video="mainVideo-mail" id="subtitle"]] -[[!template text="This document was produced entirely with" start="00:37:02.880" video="mainVideo-mail" id="subtitle"]] -[[!template text="Libre-Halaal Software, and is published using" start="00:37:06.760" video="mainVideo-mail" id="subtitle"]] -[[!template text="Libre-Halaal Internet Services." start="00:37:10.800" video="mainVideo-mail" id="subtitle"]] -[[!template text="I want to thank all the EmacsConf Organizers" start="00:37:13.080" video="mainVideo-mail" id="subtitle"]] -[[!template text="for their great work," start="00:37:17.960" video="mainVideo-mail" id="subtitle"]] -[[!template text="and Sacha, Leo, and Amin in particular." start="00:37:19.520" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""Greetings. Salaam. This is Mohsen Banan. محسن بنان.""" start="00:00:00.000" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I am a software and internet engineer.""" start="00:00:09.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I have been interested in email and""" start="00:00:12.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Emacs for a very long time.""" start="00:00:14.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""My interest in email started with X.400""" start="00:00:17.200" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and the Red and Blue CCITT books -- circa 1988.""" start="00:00:21.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Early on, in the very early 1990s, I jumped ship""" start="00:00:27.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and joined the Internet email movement.""" start="00:00:32.000" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I am the primary author of two mobile email""" start="00:00:35.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""related Internet RFCs, RFC-2188 and RFC-2524.""" start="00:00:38.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""My interest in Emacs started in 1986 --""" start="00:00:45.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""It was Emacs version 17 then. By around 1988""" start="00:00:49.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""when Emacs version 18 was well in place,""" start="00:00:54.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I started living inside of Emacs.""" start="00:00:58.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""My primary digital environment has been Emacs ever since.""" start="00:01:01.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""It has been a good life.""" start="00:01:06.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""It turns out that Emacs and email mix up really well.""" start="00:01:11.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Here, in this presentation and in the context of""" start="00:01:17.000" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Revisiting The Anatomy of Emacs Mail User Agents,""" start="00:01:21.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""With MARMEE (Multi-Account Resident""" start="00:01:26.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Message Exchange Environment)""" start="00:01:30.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I am offering my thoughts on this topic""" start="00:01:33.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""in this Emacs Conference 2022.""" start="00:01:35.560" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""Long ago, I asked myself:""" start="00:01:41.080" video="mainVideo-mail" id="subtitle"]] +[[!template text=""""What should my ultimate mail environment be?"""" start="00:01:43.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Over the past 20+ years, I have been exploring""" start="00:01:49.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""the concept of the "Ultimate Mail User Agent (MUA)".""" start="00:01:52.141" video="mainVideo-mail" id="subtitle"]] +[[!template text="""We do care about privacy, autonomy,""" start="00:01:58.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""morality, ethics, society and philosophy,""" start="00:02:01.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""so from the get go, proprietary (Haraam) environments""" start="00:02:05.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""such as Microsoft Office's Outlook""" start="00:02:10.680" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and Google Office's Gmail were non-starters for me.""" start="00:02:14.200" video="mainVideo-mail" id="subtitle"]] +[[!template text="""But these are significant realities""" start="00:02:20.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and we need to deal with these realities.""" start="00:02:23.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Notice how Microsoft and Google""" start="00:02:27.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""have both framed their MUAs in the context of "office".""" start="00:02:30.200" video="mainVideo-mail" id="subtitle"]] +[[!template text="""That type of framing is correct.""" start="00:02:36.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""an MUA must be fully integrated""" start="00:02:38.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""in the totality of one's digital ecosystem.""" start="00:02:41.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""So, the Ultimate Mail User Agent""" start="00:02:46.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""must be part of the Ultimate Usage Environment""" start="00:02:49.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""of the Ultimate Digital Ecosystem.""" start="00:02:53.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""In the non-proprietary (Halaal) universe, clearly""" start="00:02:57.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""the ultimate usage environment is Emacs.""" start="00:03:02.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Emacs is today's most potent and convivial""" start="00:03:07.200" video="mainVideo-mail" id="subtitle"]] +[[!template text="""non-proprietary usage environment.""" start="00:03:10.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""So, clearly, the ultimate Mail User Agent""" start="00:03:15.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""must be an integral part of Emacs.""" start="00:03:19.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Having reached that conclusion,""" start="00:03:22.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""we then need to determine the specifics""" start="00:03:24.158" video="mainVideo-mail" id="subtitle"]] +[[!template text="""of the shape and the anatomy of Emacs' MUAs.""" start="00:03:28.125" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""We could have arrived at this conclusion""" start="00:03:33.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""from the reverse direction as well.""" start="00:03:36.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Zawinski's Law states:""" start="00:03:38.240" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Every program attempts to expand until it can read mail.""" start="00:03:41.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Those programs which cannot so expand""" start="00:03:46.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""are replaced by ones which can.""" start="00:03:49.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Jamie's point is very simple and obvious.""" start="00:03:52.680" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The "App" that you "live in" all day""" start="00:03:56.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""should be your MUA and mail environment.""" start="00:03:59.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I ask those who jumped ship, who abandoned Emacs""" start="00:04:05.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""in favor of VS Code: What about mail?""" start="00:04:09.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Long ago, Emacs expanded to including MUAs.""" start="00:04:15.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""In fact there are many Emacs MUAs that you can choose from.""" start="00:04:21.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""If you are already hip with Emacs And Linux,""" start="00:04:27.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""you should definitely consider doing email in Emacs.""" start="00:04:30.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""But if you are not already hip with Emacs,""" start="00:04:34.640" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I mean for new Emacs users, unfortunately,""" start="00:04:39.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""setting up and using email is not straight forward.""" start="00:04:43.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""We (I mean, Emacs developers) should work on that!""" start="00:04:48.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Emacs offers a good number of MUAs with""" start="00:04:54.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""different characteristics to suit differing tastes.""" start="00:04:57.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""As of 2022, you can choose from the following MUAs:""" start="00:05:01.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Gnus, VM, WanderLust, Mew, mu4e, notmuch.el, mh-e and Rmail.""" start="00:05:06.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Over the years I have tried several of these""" start="00:05:15.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and eventually landed on Gnus.""" start="00:05:17.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The relevance column in this table simply and only""" start="00:05:20.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""reflects my taste.""" start="00:05:25.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Throughout the rest of this presentation, I focus on Gnus.""" start="00:05:28.080" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""I have 3 types of audiences in mind for this presentation.""" start="00:05:32.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""First, if you are already using Emacs""" start="00:05:36.200" video="mainVideo-mail" id="subtitle"]] +[[!template text="""as more than an editor,""" start="00:05:39.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""it makes good sense for you to also use Emacs as your MUA.""" start="00:05:42.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""There may well be some relevant information here for you""" start="00:05:47.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""in that situation.""" start="00:05:50.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Second, for those interested in philosophy of Emacs,""" start="00:05:52.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I go on some bigger picture tangents""" start="00:05:57.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""that may be of value to you.""" start="00:06:00.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Third, I address some Emacs developers with some feedback,""" start="00:06:02.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""some suggestions, and some requests.""" start="00:06:08.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The general model here is that""" start="00:06:11.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""we would collectively work towards""" start="00:06:14.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""improving what is on the table.""" start="00:06:17.080" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""When a Mail User Agent is self-contained""" start="00:06:19.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and includes implementation of mail protocols,""" start="00:06:22.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""we call it a Monolithic-MUA.""" start="00:06:26.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Just as it is with the physical mail postal service,""" start="00:06:29.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""sending mail and receiving mail""" start="00:06:33.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""are fundamentally separate activities.""" start="00:06:36.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""And then there is mail processing.""" start="00:06:40.640" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""Based on these categorizations,""" start="00:06:42.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Emacs has a set of mature libraries""" start="00:06:45.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""for composing mail, sending mail, and receiving mail.""" start="00:06:49.680" video="mainVideo-mail" id="subtitle"]] +[[!template text="""These are all independently well-documented""" start="00:06:53.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and are part of the basic emacs Distribution.""" start="00:06:58.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Emacs MUAs then use these common libraries""" start="00:07:02.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""to process mail (each somewhat differently).""" start="00:07:06.240" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The primary benefit of the Monolithic-MUA approach""" start="00:07:09.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""is that Emacs MUAs then become self-contained""" start="00:07:15.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and therefore multi-platform.""" start="00:07:19.600" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""But, when it comes to the question of merits of""" start="00:07:22.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""implementation of mail protocols in Elisp inside of Emacs,""" start="00:07:25.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""there is also another approach:""" start="00:07:30.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""that of a Split-MUA.""" start="00:07:33.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Concept of a split-MUA is that of""" start="00:07:36.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""splitting the MUA into two different parts:""" start="00:07:40.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""One being the usage environment,""" start="00:07:44.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and the other being mail protocols processing.""" start="00:07:47.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The interface between these can be either""" start="00:07:50.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""direct (the upper box)""" start="00:07:54.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""or through protocols (the lower box).""" start="00:07:57.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""With Gnus, we primarily use the direct interface.""" start="00:08:00.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The split-MUA model has many advantages""" start="00:08:05.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""over the monolithic-MUA model.""" start="00:08:09.640" video="mainVideo-mail" id="subtitle"]] +[[!template text="""With Split-MUAs, your messages are local,""" start="00:08:12.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""you can search them privately""" start="00:08:17.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and access to your email is faster.""" start="00:08:19.840" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""Gnus can be used as both a Monolithic-MUA""" start="00:08:22.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and also as a Split-MUA.""" start="00:08:28.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Gnus and other Emacs MUAs are flexible enough""" start="00:08:30.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""to allow you to create your own split-MUA.""" start="00:08:35.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""For outgoing mail, Gnus can""" start="00:08:39.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""invoke a sendmail-like interface program.""" start="00:08:42.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""For incoming mail, Gnus can access Maildirs directly""" start="00:08:45.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and let other programs imap-retrieve""" start="00:08:50.008" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and update into maildirs.""" start="00:08:53.725" video="mainVideo-mail" id="subtitle"]] +[[!template text="""You can then search through your maildirs""" start="00:08:56.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""locally and privately""" start="00:08:59.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""with various mail-oriented search engines,""" start="00:09:01.375" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and many have done so.""" start="00:09:04.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""For example, what we are seeing on this slide""" start="00:09:07.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""is from a 2014 Do It Yourself (DIY) recipe""" start="00:09:11.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""that one of our fellow Emacs conference participants,""" start="00:09:15.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Adolfo, had published at the mentioned URL.""" start="00:09:20.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The recipe in that slide is based on the following tools:""" start="00:09:24.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""mbsync, mu, mu4e, and msmtp.""" start="00:09:29.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""All our choices are different.""" start="00:09:35.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""There are many such recipes out there on the web.""" start="00:09:38.280" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""So, here, I don't want to provide""" start="00:09:42.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""yet another Emacs Split-MUA recipe.""" start="00:09:46.200" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I want to do more.""" start="00:09:50.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Instead, I want to target the contours of the ultimate MUA""" start="00:09:51.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""in the non-proprietary universe of digital ecosystems.""" start="00:09:56.680" video="mainVideo-mail" id="subtitle"]] +[[!template text="""But, first, let's take a look at what is""" start="00:10:01.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""happening in the proprietary universe.""" start="00:10:05.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The 5 big American proprietary tech companies""" start="00:10:07.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""(Google, Microsoft, Apple, Facebook and Amazon)""" start="00:10:11.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""have created 5 competing enclaves as mostly separate""" start="00:10:14.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and isolated digital ecosystem.""" start="00:10:20.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""In this slide, I am focusing on the first 3""" start="00:10:23.000" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and each of their office and email environments.""" start="00:10:27.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Let's clearly recognize that the economic model""" start="00:10:31.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""of these proprietary digital ecosystems is:""" start="00:10:36.320" video="mainVideo-mail" id="subtitle"]] +[[!template text=""""Surveillance Capitalism".""" start="00:10:40.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""So, when any of us goes there to get""" start="00:10:42.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""a free-of-charge email account,""" start="00:10:45.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""he has chosen to voluntarily forgo much of his privacy.""" start="00:10:47.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""And many have done so.""" start="00:10:53.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Sadly, the rest of the world is becoming""" start="00:10:55.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Americanized through the American Internet.""" start="00:10:59.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""As of 2022, almost %90 of Facebook's""" start="00:11:02.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""daily active users come from outside of the US.""" start="00:11:08.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Also, with respect to email, each of the enclaves""" start="00:11:11.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""have MUAs that are fully integrated""" start="00:11:17.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""in their digital ecosystems""" start="00:11:20.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""in the form of an office environment""" start="00:11:22.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""comprising of address book, calendar, time management""" start="00:11:24.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and planning tools and multi-lingual authoring""" start="00:11:29.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and various other integrated tools.""" start="00:11:33.200" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Now, let's focus on the right side of this picture.""" start="00:11:36.240" video="mainVideo-mail" id="subtitle"]] +[[!template text="""On the non-proprietary side,""" start="00:11:40.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""based on the Western FLOSS model,""" start="00:11:43.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""we have ended up with lots of components.""" start="00:11:46.240" video="mainVideo-mail" id="subtitle"]] +[[!template text="""We have Debian as a platform,""" start="00:11:49.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""we have Emacs as an editor-centered office environment""" start="00:11:52.240" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and we have Gnus as an incredibly powerful MUA.""" start="00:11:58.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""But on the non-proprietary side we don't have anything""" start="00:12:03.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""that can reasonably be considered a digital ecosystem.""" start="00:12:07.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I mean, the services aspect is missing.""" start="00:12:12.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Over the past two decades I have created""" start="00:12:16.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""quite an elaborate digital ecosystem for myself.""" start="00:12:20.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""It is called: By*.""" start="00:12:24.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The Libre-Halaal ByStar Digital Ecosystem""" start="00:12:26.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""is being built to provide autonomy-oriented services""" start="00:12:30.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""on internet scale.""" start="00:12:35.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The * in ByStar stands for Unix's globbing symbol,""" start="00:12:37.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""signifying that our scope is everything.""" start="00:12:42.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Notice in this bigger picture that in the red box,""" start="00:12:46.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""our focus remains to be Emacs, Gnus and the ultimate MUA.""" start="00:12:52.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I am not here to sell you ByStar, but perhaps""" start="00:12:58.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""you should be in the market for something like that.""" start="00:13:03.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""We need non-proprietary digital ecosystems.""" start="00:13:06.240" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""Very briefly, I'll give you""" start="00:13:10.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""some pointers to the full ByStar story.""" start="00:13:13.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The full ByStar story is a 250 plus pages book titled:""" start="00:13:16.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Nature Of Polyexistentials,""" start="00:13:23.240" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Basis For Abolishment Of""" start="00:13:26.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The Western Intellectual Property Rights Regime,""" start="00:13:28.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""And Introduction Of""" start="00:13:31.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The Libre-Halaal ByStar Digital Ecosystem.""" start="00:13:33.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I have it self-published on my own ByName public web page.""" start="00:13:36.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The ByStar story starts with understanding of the""" start="00:13:42.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Nature Of Polyexistentials.""" start="00:13:46.640" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Polyexistentials inherently exist in multiples.""" start="00:13:48.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Software is a polyexistential.""" start="00:13:53.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Polyexistentials are naturally non-scarce,""" start="00:13:56.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and making polyexistential artificially scarce,""" start="00:14:01.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""which is what the Western""" start="00:14:06.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""intellectual property rights regime does,""" start="00:14:08.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""is counter to nature.""" start="00:14:11.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Polyexistentials are unownable""" start="00:14:13.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and should not be considered property.""" start="00:14:17.640" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The Western IPR regime is in conflict with nature.""" start="00:14:20.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""But, the book is more than just philosophy.""" start="00:14:25.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""In that book I also cover""" start="00:14:29.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""the bigger picture of healthy digital ecosystems""" start="00:14:32.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""which also includes the topic of this presentation.""" start="00:14:35.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I'd be interested in your thoughts and your feedback,""" start="00:14:39.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""if you choose to dig deeper.""" start="00:14:43.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""And if you want to dig deeper, here are some links.""" start="00:14:45.680" video="mainVideo-mail" id="subtitle"]] +[[!template text="""By* is about re-decentralization""" start="00:14:51.000" video="mainVideo-mail" id="subtitle"]] +[[!template text="""of Internet application services.""" start="00:14:55.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Among other things, ByStar provides""" start="00:14:57.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""complete own-your-email services. I mean,""" start="00:15:00.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""private Hillary-Clinton-Style mail servers for everyone.""" start="00:15:05.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""There is an overview of ByStar at by-star.net.""" start="00:15:10.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""You may have noticed that I consistently use""" start="00:15:16.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""the "Libre-Halaal" label with ByStar.""" start="00:15:21.200" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Halaal is a very sensitive word.""" start="00:15:25.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I am a Moslem.""" start="00:15:28.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""But my use of Halaal is not in a religious context.""" start="00:15:30.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""It is in a philosphical context.""" start="00:15:35.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""And the scope of the "Libre-Halaal" label""" start="00:15:39.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""is manner-of-existence of Software and Services.""" start="00:15:42.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""It is not about Halaal-ness with respect to""" start="00:15:46.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""function and use of Software and Services.""" start="00:15:50.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Unfortunately, the word Halaal""" start="00:15:54.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and the concept of Halaal does not exist in English.""" start="00:15:58.240" video="mainVideo-mail" id="subtitle"]] +[[!template text="""So, first I introduce it into Globish.""" start="00:16:02.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I have done so in PLPC-120039.""" start="00:16:06.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Further, I explain as to why labels""" start="00:16:12.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""of Open Source and Free Software are both ill-directed.""" start="00:16:18.200" video="mainVideo-mail" id="subtitle"]] +[[!template text="""We then carefully define""" start="00:16:22.640" video="mainVideo-mail" id="subtitle"]] +[[!template text=""""Libre-Halaal Software" and "Libre-Halaal Services".""" start="00:16:25.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Notice that last link.""" start="00:16:30.000" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I bet, this is the first time""" start="00:16:33.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""that anyone includes a link to his "Open Business Plan"""" start="00:16:36.200" video="mainVideo-mail" id="subtitle"]] +[[!template text="""in an Emacs Conference.""" start="00:16:40.680" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I hope others would do this as well.""" start="00:16:43.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""There is appetite out there""" start="00:16:46.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""for privacy- and autonomy-oriented digital ecosystems,""" start="00:16:49.680" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and there is no conflict between honest business,""" start="00:16:53.640" video="mainVideo-mail" id="subtitle"]] +[[!template text="""honest profit, and Libre-Halaal Software""" start="00:16:57.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and Libre-Halaal Services.""" start="00:17:01.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The sub-title of our open business plan is:""" start="00:17:02.920" video="mainVideo-mail" id="subtitle"]] +[[!template text=""""An Inversion to the Proprietary Internet Services Model".""" start="00:17:08.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""And here are the same links as a native Reveal slide.""" start="00:17:12.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""If instead of a video, you are viewing""" start="00:17:20.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""this presentation as a Reveal web page,""" start="00:17:24.680" video="mainVideo-mail" id="subtitle"]] +[[!template text="""you can just click on the pointers and URLs.""" start="00:17:27.400" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""So, what was the point of bringing ByStar""" start="00:17:31.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""into this presentation?""" start="00:17:36.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""In tangible terms, what have we gotten out of""" start="00:17:38.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""the tangent we took on the ByStar bigger picture?""" start="00:17:42.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Of course we have the ByStar Digital Ecosystem itself.""" start="00:17:45.640" video="mainVideo-mail" id="subtitle"]] +[[!template text="""But that is not immediately relevant to this presentation.""" start="00:17:50.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Here, through BISOS we now have""" start="00:17:54.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""an integration framework, which we definitely needed.""" start="00:17:59.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""We now have BISOS-MARMEE,""" start="00:18:04.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Multi-Account Resident Mail Exchange Environment,""" start="00:18:07.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""which is a consistent set""" start="00:18:11.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""of MUA-related software components --- which we need.""" start="00:18:13.680" video="mainVideo-mail" id="subtitle"]] +[[!template text="""We also needed to augment Emacs in our own terms,""" start="00:18:17.640" video="mainVideo-mail" id="subtitle"]] +[[!template text="""so we have Blee for that,""" start="00:18:23.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""ByStar Libre-Halaal Emacs Environment,""" start="00:18:25.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""is ByStar ecosystemized Emacs.""" start="00:18:29.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""And finally Blee-Gnus, which is""" start="00:18:32.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Gnus and MARMEE integrated with Blee.""" start="00:18:37.680" video="mainVideo-mail" id="subtitle"]] +[[!template text="""With these in place, we can now dive deeper into MARMEE.""" start="00:18:40.640" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The idea of MARMEE, is that of packaging together""" start="00:18:46.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""the mail protocols parts of the Split-MUA.""" start="00:18:53.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""MARMEE (which is of course in the context of BISOS)""" start="00:18:56.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""is the green box in this slide.""" start="00:19:00.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""For outgoing mail, we use an altered qmail.""" start="00:19:03.680" video="mainVideo-mail" id="subtitle"]] +[[!template text="""We will be looking deeper into qmail a bit later.""" start="00:19:08.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""For incoming mail, we are using offlineimap""" start="00:19:12.680" video="mainVideo-mail" id="subtitle"]] +[[!template text="""which is oauth2 aware.""" start="00:19:17.560" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""Before going into more details,""" start="00:19:20.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""let's take a look at the parts lists for""" start="00:19:23.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""BISOS-MARMEE and Blee-Gnus.""" start="00:19:26.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""MARMEE is a collection of Python-based libraries""" start="00:19:29.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and Debian packages that provide for rich sending""" start="00:19:33.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and receiving of email outside of Emacs.""" start="00:19:37.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Here is our BISOS-MARMEE parts list.""" start="00:19:40.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""MARMEE features include tracked mail Sending""" start="00:19:44.240" video="mainVideo-mail" id="subtitle"]] +[[!template text="""for confirmed mail communications""" start="00:19:48.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and email distribution facilities""" start="00:19:51.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""(say, similar to Constant Contact).""" start="00:19:54.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""For Delivery Status Notification (DSN),""" start="00:19:57.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""we have adopted flufl.bounce.""" start="00:20:02.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I'll be touching on everything that is qmail-related,""" start="00:20:06.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""namely qmail-remote.cs and mailfront, in a separate slide.""" start="00:20:10.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""notmuch is our choice of mail search engine.""" start="00:20:17.320" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""Similarly, here is our Blee-Gnus Parts List.""" start="00:20:21.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Blee-Gnus is Gnus and MARMEE integrated with BISOS and Blee.""" start="00:20:27.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Notice mentions of org-msg and polymode here.""" start="00:20:33.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Later, I'll expand on these in the context of""" start="00:20:38.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""transitioning from Message-Mode to Message-Polymode.""" start="00:20:42.880" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""With these parts in place,""" start="00:20:47.680" video="mainVideo-mail" id="subtitle"]] +[[!template text="""now let's see how they will all come together.""" start="00:20:52.200" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Gnus is very flexible, and in combination with MARMEE,""" start="00:20:55.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""it can create an incredibly powerful MUA.""" start="00:21:00.000" video="mainVideo-mail" id="subtitle"]] +[[!template text="""On this slide, note the boxes""" start="00:21:03.640" video="mainVideo-mail" id="subtitle"]] +[[!template text="""that include the FPs label.""" start="00:21:07.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""FP stand for File Parameters.""" start="00:21:10.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""It is the basis of BISOS's configuration""" start="00:21:14.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and secrets management.""" start="00:21:18.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Notice that it has consistent agents""" start="00:21:20.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""inside of Emacs and on the OS.""" start="00:21:24.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""This is a big deal""" start="00:21:27.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""in that it can reduce user visible configuration complexity.""" start="00:21:29.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Also, notice the X822-Bus here.""" start="00:21:34.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The idea of X822-Bus is that of""" start="00:21:39.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""allowing for communication among user's preferences, Gnus""" start="00:21:44.000" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and MARMEE-qmail through addition of X- fields""" start="00:21:49.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""in RFC-822 message headers.""" start="00:21:53.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""X822-Bus is used for selection of mail sending agents""" start="00:21:57.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and specification of delivery status parameters.""" start="00:22:03.600" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""Of key significance in this picture""" start="00:22:08.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""is our choice of qmail for outgoing mail.""" start="00:22:12.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Compared to sendmail, postfix, exim,""" start="00:22:15.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and other conventional MTAs;""" start="00:22:22.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""the qmail ecosystem is far more flexible and potent.""" start="00:22:25.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""We are not using qmail as is.""" start="00:22:31.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Ours is called bystar-qmail.""" start="00:22:34.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""When we use it as a traditional MTA,""" start="00:22:38.000" video="mainVideo-mail" id="subtitle"]] +[[!template text="""we refer to it as PALS-qmail.""" start="00:22:41.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""And when we use it on the MUA side, we call it MARMEE-qmail.""" start="00:22:45.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Just like Emacs, qmail has""" start="00:22:52.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""a solid core and a flexible periphery.""" start="00:22:56.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""All our alterations have been on the periphery.""" start="00:22:59.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""We have replaced qmail-remote""" start="00:23:04.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""with our own Python implementation called qmail-remote.cs.""" start="00:23:07.891" video="mainVideo-mail" id="subtitle"]] +[[!template text="""By being in Python, it can do a lot more a lot more easily.""" start="00:23:14.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""For example, qmail-remote.cs interacts with""" start="00:23:20.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Google Oauth2 APIs and allows you to send through Gmail.""" start="00:23:26.541" video="mainVideo-mail" id="subtitle"]] +[[!template text="""This is shown with the red circle.""" start="00:23:33.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""We have also replaced qmail-smtpd with mailfront,""" start="00:23:36.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""shown with a blue circle.""" start="00:23:43.640" video="mainVideo-mail" id="subtitle"]] +[[!template text="""This allows us to use MARMEE Split-MUA""" start="00:23:46.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""through protocol interfaces.""" start="00:23:51.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Let's take a look at that.""" start="00:23:54.000" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""Previously we looked at the "Direct Interface" of MARMEE,""" start="00:23:56.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""specifically, qmail-inject and Maildir for Gnus.""" start="00:24:02.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""But what if we wanted to use""" start="00:24:08.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""MARMEE with other MUAs outside of Emacs?""" start="00:24:11.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""That can be done through the "Protocol Interface".""" start="00:24:15.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""MARMEE also includes "mailfront"""" start="00:24:18.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""which can function as an SMTP submit server for localhost.""" start="00:24:22.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""This way, we can configure""" start="00:24:27.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""the outgoing mail part of any MUA to point to the localhost""" start="00:24:30.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and have MARMEE-qmail function as an outgoing proxy.""" start="00:24:36.240" video="mainVideo-mail" id="subtitle"]] +[[!template text="""For incoming mail, MARMEE-Split-MUA-Protocol-Interface""" start="00:24:41.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""includes "Courier", which can function""" start="00:24:47.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""as an IMAP server for localhost.""" start="00:24:51.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""This way, we can configure the incoming mail part""" start="00:24:54.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""of any MUA to point to the localhost""" start="00:24:58.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and have MARMEE function as an incoming proxy""" start="00:25:02.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""by serving the local Maildir to the MUA.""" start="00:25:06.520" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""All sources for all of ByStar, BISOS,""" start="00:25:10.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Blee and MARMEE are subject to Affero GPL.""" start="00:25:18.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The sources and documentation are all republished""" start="00:25:23.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""under various "Organizations"""" start="00:25:28.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""under github.com/mohsenBanan""" start="00:25:30.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""All of ByStar, BISOS, Blee and MARMEE""" start="00:25:35.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""reflect work in progress,""" start="00:25:40.680" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and we are NOT recruiting users at this time.""" start="00:25:42.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""For more than two decades,""" start="00:25:46.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I have been using these all in that bigger context.""" start="00:25:49.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""They are mostly real,""" start="00:25:53.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""but so far, just for myself and a few other engineers.""" start="00:25:56.240" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Our model is similar to God's early days.""" start="00:26:01.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""You may ask:""" start="00:26:06.520" video="mainVideo-mail" id="subtitle"]] +[[!template text=""""How did God create all of this in just 7 days?"""" start="00:26:08.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Well, easy, He did not have an installed base to deal with.""" start="00:26:12.120" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""You can obtain and install MARMEE in two ways. As is:""" start="00:26:17.200" video="mainVideo-mail" id="subtitle"]] +[[!template text="""as standalone-MARMEE, you can just""" start="00:26:24.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""pip install bisos.marmee.""" start="00:26:29.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""For the Gnus part you are completely on your own.""" start="00:26:31.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Or on a Debian-11, you can just run""" start="00:26:35.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""the bisos bootstrap script.""" start="00:26:40.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""That way you will have all of BISOS, which includes MARMEE""" start="00:26:43.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and you will have Blee, which includes Blee-Gnus.""" start="00:26:48.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""If you plan to do so,""" start="00:26:52.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I suggest that you first try it in a disposable VM.""" start="00:26:54.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""BISOS and Blee are large.""" start="00:26:58.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Many apt and pip packages will be installed!""" start="00:27:02.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""And here are the same links as a native Reveal slide.""" start="00:27:06.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""If you are viewing this presentation as Reveal.js web page,""" start="00:27:11.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""you can just click on the pointers and URLs.""" start="00:27:17.520" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""Let's consider MARMEE as an Emacs "Common Agent".""" start="00:27:20.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""By "Common-Agent" I mean a capability""" start="00:27:25.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""which Emacs builds on""" start="00:27:28.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and which other Apps can also use.""" start="00:27:30.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Emacs has a very rich applications development framework""" start="00:27:33.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""for absorbing common-agents.""" start="00:27:38.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Consider how magit has absorbed git,""" start="00:27:41.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""or how flycheck has absorbed mypy""" start="00:27:45.475" video="mainVideo-mail" id="subtitle"]] +[[!template text="""or how EAF does its work outside of Emacs ---""" start="00:27:49.775" video="mainVideo-mail" id="subtitle"]] +[[!template text="""that too can be considered a common-agent.""" start="00:27:54.200" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The common-agent model permits us""" start="00:27:57.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""to do more outside of Emacs.""" start="00:28:02.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Common-agents maximize social benefits""" start="00:28:04.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and are more convivial.""" start="00:28:08.640" video="mainVideo-mail" id="subtitle"]] +[[!template text="""For example, any MUA can profit from MARMEE.""" start="00:28:10.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""But we don't have good ways of""" start="00:28:15.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""packaging Emacs and its packages""" start="00:28:18.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""with their common-agents.""" start="00:28:21.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Instead, we usually end up with DIY recipes.""" start="00:28:23.640" video="mainVideo-mail" id="subtitle"]] +[[!template text="""This is why I am contextualizing""" start="00:28:28.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Emacs inside of Blee and BISOS.""" start="00:28:32.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""That is what they are for.""" start="00:28:35.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""And that is why I consider them""" start="00:28:38.000" video="mainVideo-mail" id="subtitle"]] +[[!template text="""immediately relevant to this presentation.""" start="00:28:40.425" video="mainVideo-mail" id="subtitle"]] +[[!template text="""With an incredibly powerful Display Engine,""" start="00:28:43.200" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and an incredibly powerful Elisp Engine,""" start="00:28:47.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and an incredibly powerful Input Methods Engine,""" start="00:28:51.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and an incredibly powerful Common-Agents paradigm,""" start="00:28:55.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Emacs has the potential of being""" start="00:28:59.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""any non-proprietary digital ecosystem's""" start="00:29:02.708" video="mainVideo-mail" id="subtitle"]] +[[!template text="""preferred usage environment.""" start="00:29:06.408" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I am in favor of putting more around Emacs""" start="00:29:08.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and strengthening integration of Emacs""" start="00:29:14.091" video="mainVideo-mail" id="subtitle"]] +[[!template text="""with Debian, explicitly,""" start="00:29:17.441" video="mainVideo-mail" id="subtitle"]] +[[!template text="""perhaps even at the cost of""" start="00:29:19.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""de-emphasizing its multi-platform attribute.""" start="00:29:22.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""A smaller Emacs is a better Emacs.""" start="00:29:26.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Notice that in this slide,""" start="00:29:30.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I have used many arrows in many colors.""" start="00:29:33.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Much of Emacs's power comes from its ability""" start="00:29:37.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""to absorb and to integrate.""" start="00:29:45.600" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""Tomohiro is right on the mark when he says,""" start="00:29:47.760" video="mainVideo-mail" id="subtitle"]] +[[!template text=""""The reason why Emacs platform is good""" start="00:29:51.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""is that it cooperates with OS,""" start="00:29:55.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""not because it is good by itself."""" start="00:29:58.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I am suggesting that we should""" start="00:30:00.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""raise the bar from the OS""" start="00:30:04.000" video="mainVideo-mail" id="subtitle"]] +[[!template text="""to the entirety of our digital ecosystem.""" start="00:30:06.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""There are many models""" start="00:30:09.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""for Emacs to cooperate with the OS""" start="00:30:13.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and with applications and with services.""" start="00:30:15.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The colors of arrows in the previous slide correspond to""" start="00:30:19.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""the model of interface of the common-agent:""" start="00:30:25.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""for example, sub-process invocation, pipe-based""" start="00:30:28.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""asynchronous interface, or file-based interactions.""" start="00:30:34.000" video="mainVideo-mail" id="subtitle"]] +[[!template text="""One important aspect of common-agent paradigm is that""" start="00:30:39.360" video="mainVideo-mail" id="subtitle"]] +[[!template text="""both the common-agent and its Emacs App""" start="00:30:44.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""need to be configured consistently.""" start="00:30:50.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""In MARMEE and Blee-Gnus,""" start="00:30:53.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""we use File-Params to accomplish this.""" start="00:30:57.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""In BISOS, there is a Python interface to File-Params,""" start="00:31:01.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""there is a Bash interface to File-Params,""" start="00:31:06.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and in Blee, there is an Elisp interface to File-Params.""" start="00:31:10.240" video="mainVideo-mail" id="subtitle"]] +[[!template text="""So, configurations are extended.""" start="00:31:15.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Furthermore, File-Params can be encrypted,""" start="00:31:18.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and credentials can be protected and shared.""" start="00:31:23.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""This is a significant improvement over .authinfo""" start="00:31:26.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and its more recent incarnations.""" start="00:31:33.920" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""EmacsConf could be a great place""" start="00:31:36.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""for users to provide feedback to developers""" start="00:31:41.200" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and for developers to suggest to developers.""" start="00:31:44.375" video="mainVideo-mail" id="subtitle"]] +[[!template text="""In that spirit, my primary audience in this part""" start="00:31:47.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""are fellow Emacs developers.""" start="00:31:52.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""BISOS-MARMEE and Blee-Gnus are starting points.""" start="00:31:54.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""We can collectively work""" start="00:32:00.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""towards improving what is in place.""" start="00:32:02.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Some such improvements involve""" start="00:32:04.680" video="mainVideo-mail" id="subtitle"]] +[[!template text="""collaboration among various Emacs developers.""" start="00:32:07.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Here, I am making some explicit requests""" start="00:32:11.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""from some of the relevant emacs developers.""" start="00:32:16.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""At most, these are requests and invitations.""" start="00:32:19.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""For each of these requests, I am providing links""" start="00:32:24.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""for additional details.""" start="00:32:28.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""In due course, I'll follow up""" start="00:32:30.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""in the Emacs developers mailing list.""" start="00:32:33.040" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""Gnus uses X-Message-SMTP-Method""" start="00:32:35.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""for selection of Mail-Sending-Agent.""" start="00:32:41.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Even though all the qmail injection code is still in Gnus,""" start="00:32:45.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""support for "X-Message-SMTP-Method: qmail" is missing.""" start="00:32:50.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""It takes 2 lines of code to revive it.""" start="00:32:58.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""With regards to (1), qmail was previously supported in Gnus.""" start="00:33:02.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Lars, can you please reactivate it? Thanks.""" start="00:33:07.400" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""(2) is a terminology suggestion.""" start="00:33:11.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The term X-Message-SMTP-Method violates conceptual layering.""" start="00:33:16.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Please consider changing it to X-Message-Send-Method.""" start="00:33:21.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""In a Split-MUA setup, Gnus need not know about SMTP at all.""" start="00:33:27.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""We just need to pass information""" start="00:33:33.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""to a Mail-Sending-Agent selector.""" start="00:33:36.600" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""(3) is simply a design suggestion for""" start="00:33:39.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""which I prepared the context.""" start="00:33:44.440" video="mainVideo-mail" id="subtitle"]] +[[!template text=""".authinfo and Emacs auth-source library""" start="00:33:46.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""are too Emacs-centric.""" start="00:33:51.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""We need to share config info and secrets""" start="00:33:54.200" video="mainVideo-mail" id="subtitle"]] +[[!template text="""between common-agents and Emacs.""" start="00:33:57.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""The File Parameters approach""" start="00:34:00.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""can be a general-purpose solution.""" start="00:34:03.640" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Is it reasonable to extend auth-source library to""" start="00:34:05.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""support File Params?""" start="00:34:10.840" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I'll cover (4) in the next slide.""" start="00:34:12.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""(5) is a philosophical common suggestion""" start="00:34:16.520" video="mainVideo-mail" id="subtitle"]] +[[!template text="""to all Emacs developers. We need to better cultivate""" start="00:34:21.160" video="mainVideo-mail" id="subtitle"]] +[[!template text="""the model of Common-Agents integration with Emacs.""" start="00:34:26.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""And here are the same links as a native Reveal slide.""" start="00:34:30.880" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""A mail message comprises of""" start="00:34:39.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Envelope, Header and BodyParts.""" start="00:34:42.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Each of these have their own syntax (their own mode).""" start="00:34:45.600" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Conceivably Each BodyPart has its own mode.""" start="00:34:49.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""So, we need to evolve Message-Mode into Message-Polymode.""" start="00:34:53.640" video="mainVideo-mail" id="subtitle"]] +[[!template text="""More or less by default, org-mode has become""" start="00:34:59.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""the beginnings of "Emacs Native Markup Language -- ENML".""" start="00:35:03.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""With org-msg you can write your emails in org-mode ---""" start="00:35:09.000" video="mainVideo-mail" id="subtitle"]] +[[!template text="""destined as html.""" start="00:35:14.400" video="mainVideo-mail" id="subtitle"]] +[[!template text="""org-msg needs to become""" start="00:35:16.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""an integral part of Message-Polymode.""" start="00:35:19.560" video="mainVideo-mail" id="subtitle"]] +[[!template text="""It would be heavenly""" start="00:35:22.240" video="mainVideo-mail" id="subtitle"]] +[[!template text="""if Lars, Jérémy and Vitalie could collaborate""" start="00:35:25.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and give us the needed Message-Polymode. Thank you.""" start="00:35:29.960" video="mainVideo-mail" id="subtitle"]] +[[!template new="1" text="""One way to verify that we have not gone astray""" start="00:35:34.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""in our horizontal bigger pictures is to verify them""" start="00:35:38.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""through the concept of "Vertical Slice Use Cases".""" start="00:35:42.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Let one use case be reading and writing""" start="00:35:46.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""of mail on multiple gmail accounts with Gnus.""" start="00:35:50.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Google now requires use of oauth2 tokens""" start="00:35:54.640" video="mainVideo-mail" id="subtitle"]] +[[!template text="""which MARMEE can do outside of emacs.""" start="00:35:59.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""There is a recent email thread""" start="00:36:02.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""on that in the emacs-devel mailing list.""" start="00:36:05.680" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Let another use case be that of tracking delivery""" start="00:36:09.120" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and non-delivery reports for custom envelope addresses""" start="00:36:14.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""of byname.net (part of ByStar) autonomous mail services.""" start="00:36:18.680" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I would have loved to walk you through these""" start="00:36:26.040" video="mainVideo-mail" id="subtitle"]] +[[!template text="""vertical slice use cases""" start="00:36:30.320" video="mainVideo-mail" id="subtitle"]] +[[!template text="""as screen captures of my Blee environment.""" start="00:36:32.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""For that, I need at least another 20 minutes.""" start="00:36:36.440" video="mainVideo-mail" id="subtitle"]] +[[!template text="""But my time is up.""" start="00:36:40.640" video="mainVideo-mail" id="subtitle"]] +[[!template text="""So, let's consider this as the first""" start="00:36:43.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""in a series of presentations""" start="00:36:46.720" video="mainVideo-mail" id="subtitle"]] +[[!template text="""where next in this series could be""" start="00:36:48.920" video="mainVideo-mail" id="subtitle"]] +[[!template text="""the mentioned two vertical slice use cases.""" start="00:36:51.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Perhaps there could be another presentation""" start="00:36:55.480" video="mainVideo-mail" id="subtitle"]] +[[!template text="""on this topic in EmacsConf 2023.""" start="00:36:59.280" video="mainVideo-mail" id="subtitle"]] +[[!template text="""This document was produced entirely with""" start="00:37:02.880" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Libre-Halaal Software, and is published using""" start="00:37:06.760" video="mainVideo-mail" id="subtitle"]] +[[!template text="""Libre-Halaal Internet Services.""" start="00:37:10.800" video="mainVideo-mail" id="subtitle"]] +[[!template text="""I want to thank all the EmacsConf Organizers""" start="00:37:13.080" video="mainVideo-mail" id="subtitle"]] +[[!template text="""for their great work,""" start="00:37:17.960" video="mainVideo-mail" id="subtitle"]] +[[!template text="""and Sacha, Leo, and Amin in particular.""" start="00:37:19.520" video="mainVideo-mail" id="subtitle"]] + +Captioner: mohsen Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202022%20mail%3A%20Revisiting%20the%20anatomy%20of%20Emacs%20mail%20user%20agents) diff --git a/2022/info/mail-before.md b/2022/info/mail-before.md index a9ec3cbb..edca92df 100644 --- a/2022/info/mail-before.md +++ b/2022/info/mail-before.md @@ -7,11 +7,11 @@ The following image shows where the talk is in the schedule for Sat 2022-12-03. </div> [[!toc ]] -Format: 38-min talk followed by live Q&A (<https://emacsconf.org/current/mail/room>) +Format: 38-min talk followed by live Q&A (done) Etherpad: <https://pad.emacsconf.org/2022-mail> Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Q&A open for participation -<div>Times in different timezones:</div><div class="times" start="2022-12-03T18:50:00Z" end="2022-12-03T19:30:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~1:50 PM - 2:30 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~12:50 PM - 1:30 PM CST (US/Central)<br />Saturday, Dec 3 2022, ~11:50 AM - 12:30 PM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~10:50 AM - 11:30 AM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~6:50 PM - 7:30 PM UTC <br />Saturday, Dec 3 2022, ~7:50 PM - 8:30 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~8:50 PM - 9:30 PM EET (Europe/Athens)<br />Sunday, Dec 4 2022, ~12:20 AM - 1:00 AM IST (Asia/Kolkata)<br />Sunday, Dec 4 2022, ~2:50 AM - 3:30 AM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~3:50 AM - 4:30 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/dev/">Find out how to watch and participate</a></div> +Status: Q&A finished, IRC and pad will be archived on this page + [[!template id="vid" vidid="mail-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-mail--revisiting-the-anatomy-of-emacs-mail-user-agents--mohsen-banan--main.webm" poster="https://media.emacsconf.org/2022/emacsconf-2022-mail--revisiting-the-anatomy-of-emacs-mail-user-agents--mohsen-banan--main.png" captions="""<track label="English" kind="captions" srclang="en" src="/2022/captions/emacsconf-2022-mail--revisiting-the-anatomy-of-emacs-mail-user-agents--mohsen-banan--main.vtt" default />""" size="93M" duration="37:31" other_resources="""[Download --main.webm (88MB)](https://media.emacsconf.org/2022/emacsconf-2022-mail--revisiting-the-anatomy-of-emacs-mail-user-agents--mohsen-banan--main.webm) diff --git a/2022/info/maint-after.md b/2022/info/maint-after.md index 8068d325..b83c3638 100644 --- a/2022/info/maint-after.md +++ b/2022/info/maint-after.md @@ -4,393 +4,395 @@ <a name="maint-mainVideo-transcript"></a> # Transcript -[[!template new="1" text="When we think about the problems of the world" start="00:00:00.000" video="mainVideo-maint" id="subtitle"]] -[[!template text="we see global warming, war, appropriation, poverty," start="00:00:06.320" video="mainVideo-maint" id="subtitle"]] -[[!template text="and among numerous other problems," start="00:00:12.120" video="mainVideo-maint" id="subtitle"]] -[[!template text="also the inability to make a living" start="00:00:13.880" video="mainVideo-maint" id="subtitle"]] -[[!template text="as an open source developer." start="00:00:16.200" video="mainVideo-maint" id="subtitle"]] -[[!template new="1" text="Now this last problem may seem a lot less consequential" start="00:00:18.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="compared to the other ones," start="00:00:22.000" video="mainVideo-maint" id="subtitle"]] -[[!template text="but what if I told you that the solution to this problem" start="00:00:23.480" video="mainVideo-maint" id="subtitle"]] -[[!template text="and the solutions to the others are one and the same?" start="00:00:26.760" video="mainVideo-maint" id="subtitle"]] -[[!template new="1" text="And it's because there's a common underlying problem" start="00:00:30.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="at the heart of all of these problems." start="00:00:33.480" video="mainVideo-maint" id="subtitle"]] -[[!template text="I'm going to tell you what that problem is in one sentence." start="00:00:36.120" video="mainVideo-maint" id="subtitle"]] -[[!template text="You ready for it? It is ..." start="00:00:39.280" video="mainVideo-maint" id="subtitle"]] -[[!template text="the deviation of market value from _true_ value." start="00:00:42.520" video="mainVideo-maint" id="subtitle"]] -[[!template text="Let's think about this in the context of" start="00:00:48.560" video="mainVideo-maint" id="subtitle"]] -[[!template text="existing economic systems such as capitalism and communism." start="00:00:50.440" video="mainVideo-maint" id="subtitle"]] -[[!template new="1" text="And of these, I want to focus on capitalism" start="00:00:55.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="because it is the only nontrivial economic system, really." start="00:00:58.680" video="mainVideo-maint" id="subtitle"]] -[[!template text="Communism is more sort of a political means" start="00:01:02.000" video="mainVideo-maint" id="subtitle"]] -[[!template text="to achieve economic ends." start="00:01:04.800" video="mainVideo-maint" id="subtitle"]] -[[!template text="And the other economic systems exist" start="00:01:07.000" video="mainVideo-maint" id="subtitle"]] -[[!template text="sort of on a spectrum between these two." start="00:01:09.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="So let's focus on capitalism." start="00:01:11.680" video="mainVideo-maint" id="subtitle"]] -[[!template text="Capitalism has as its basis of value supply and demand." start="00:01:14.320" video="mainVideo-maint" id="subtitle"]] -[[!template text="And consequently, there is a great emphasis" start="00:01:19.920" video="mainVideo-maint" id="subtitle"]] -[[!template text="on this idea of ownership." start="00:01:21.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="Now ownership is an idea that made some kind of sense" start="00:01:25.200" video="mainVideo-maint" id="subtitle"]] -[[!template text="when you have goods and services" start="00:01:28.720" video="mainVideo-maint" id="subtitle"]] -[[!template text="that are constrained in some way," start="00:01:31.560" video="mainVideo-maint" id="subtitle"]] -[[!template text="that are essentially finite in supply." start="00:01:33.120" video="mainVideo-maint" id="subtitle"]] -[[!template text="But when you have things like" start="00:01:36.120" video="mainVideo-maint" id="subtitle"]] -[[!template text="works of software, art, and music," start="00:01:37.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="which are essentially infinite in supply," start="00:01:41.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="the idea of ownership and supply and demand" start="00:01:43.880" video="mainVideo-maint" id="subtitle"]] -[[!template text="don't make sense anymore." start="00:01:46.360" video="mainVideo-maint" id="subtitle"]] -[[!template text="And yet we employ the institution of property" start="00:01:48.320" video="mainVideo-maint" id="subtitle"]] -[[!template text="to constrain supply and introduce the idea of supply" start="00:01:51.680" video="mainVideo-maint" id="subtitle"]] -[[!template text="just so that we can induce a market value" start="00:01:56.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="in terms of supply and demand" start="00:01:58.400" video="mainVideo-maint" id="subtitle"]] -[[!template text="in a capitalist economic system. And it's wrongheaded." start="00:02:00.320" video="mainVideo-maint" id="subtitle"]] -[[!template new="1" text="How many of us have written copyright declarations" start="00:02:05.760" video="mainVideo-maint" id="subtitle"]] -[[!template text="like these on our work." start="00:02:10.320" video="mainVideo-maint" id="subtitle"]] -[[!template text="It's a lot of work!" start="00:02:12.920" video="mainVideo-maint" id="subtitle"]] -[[!template text="Especially when we have version control." start="00:02:14.720" video="mainVideo-maint" id="subtitle"]] -[[!template text="Now in this example," start="00:02:18.160" video="mainVideo-maint" id="subtitle"]] -[[!template text="almost every line is written by a different person," start="00:02:19.880" video="mainVideo-maint" id="subtitle"]] -[[!template text="so who owns the code in this case?" start="00:02:23.120" video="mainVideo-maint" id="subtitle"]] -[[!template text="Who owns the copyright here?" start="00:02:25.520" video="mainVideo-maint" id="subtitle"]] -[[!template text="Is it some of them, is it all of them," start="00:02:27.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="do they share it in some way?" start="00:02:30.040" video="mainVideo-maint" id="subtitle"]] -[[!template text="It doesn't really make sense," start="00:02:32.880" video="mainVideo-maint" id="subtitle"]] -[[!template text="especially when the reason we're employing" start="00:02:34.880" video="mainVideo-maint" id="subtitle"]] -[[!template text="copyright and ownership in this case" start="00:02:37.760" video="mainVideo-maint" id="subtitle"]] -[[!template text="is to approximate the idea of attribution," start="00:02:40.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="which is what we really care about here." start="00:02:44.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="And that brings us to the nature of the solution," start="00:02:46.560" video="mainVideo-maint" id="subtitle"]] -[[!template text="which is to move away from an economic system" start="00:02:51.000" video="mainVideo-maint" id="subtitle"]] -[[!template text="based on ownership and supply and demand," start="00:02:53.160" video="mainVideo-maint" id="subtitle"]] -[[!template text="to an economic system based on attribution, instead." start="00:02:55.880" video="mainVideo-maint" id="subtitle"]] -[[!template text="That is, moving away from who _owns_ what" start="00:02:59.400" video="mainVideo-maint" id="subtitle"]] -[[!template text="to who _did_ what and how important was it." start="00:03:02.480" video="mainVideo-maint" id="subtitle"]] -[[!template text="And we can do this by the process of" start="00:03:07.320" video="mainVideo-maint" id="subtitle"]] -[[!template text="Dialectical Inheritance Attribution," start="00:03:09.720" video="mainVideo-maint" id="subtitle"]] -[[!template text="which just means that we do it in a collective way" start="00:03:12.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="using common collectively agreed upon standards" start="00:03:16.640" video="mainVideo-maint" id="subtitle"]] -[[!template text="that are applied transparently to all." start="00:03:20.640" video="mainVideo-maint" id="subtitle"]] -[[!template text="And when we have an economic system" start="00:03:24.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="that is based on attribution" start="00:03:25.600" video="mainVideo-maint" id="subtitle"]] -[[!template text="as the source of value in this way," start="00:03:26.920" video="mainVideo-maint" id="subtitle"]] -[[!template text="we call it attribution based economics." start="00:03:28.800" video="mainVideo-maint" id="subtitle"]] -[[!template text="Now, once we have that, it gives us fairness," start="00:03:34.720" video="mainVideo-maint" id="subtitle"]] -[[!template text="effective empowerment of expertise," start="00:03:39.280" video="mainVideo-maint" id="subtitle"]] -[[!template text="freedom through incentives rather than through coercion." start="00:03:43.640" video="mainVideo-maint" id="subtitle"]] -[[!template text="And privacy as well." start="00:03:46.360" video="mainVideo-maint" id="subtitle"]] -[[!template new="1" text="But I could tell you all of those things" start="00:03:49.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="and some may still say, "Why should I care about this?"" start="00:03:52.360" video="mainVideo-maint" id="subtitle"]] -[[!template text="There are those who would say" start="00:03:57.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="that fairness is not a good goal," start="00:03:58.280" video="mainVideo-maint" id="subtitle"]] -[[!template text="and that might makes right," start="00:04:00.680" video="mainVideo-maint" id="subtitle"]] -[[!template text="and that as Darwin showed us," start="00:04:03.000" video="mainVideo-maint" id="subtitle"]] -[[!template text="the nature of nature is violence." start="00:04:04.600" video="mainVideo-maint" id="subtitle"]] -[[!template text="Now I know that many of us reject this ideology," start="00:04:09.000" video="mainVideo-maint" id="subtitle"]] -[[!template text="and we feel in our bones that it is wrong." start="00:04:12.440" video="mainVideo-maint" id="subtitle"]] -[[!template text="But luckily we don't have to resort to high philosophy" start="00:04:16.360" video="mainVideo-maint" id="subtitle"]] -[[!template text="and gut feeling in order to convince ourselves" start="00:04:19.280" video="mainVideo-maint" id="subtitle"]] -[[!template text="that an attribution-based system is truly better." start="00:04:21.760" video="mainVideo-maint" id="subtitle"]] -[[!template text="Because in addition to all of" start="00:04:24.720" video="mainVideo-maint" id="subtitle"]] -[[!template text="those other properties we talked about," start="00:04:26.680" video="mainVideo-maint" id="subtitle"]] -[[!template text="an attribution-based economic system is also efficient." start="00:04:28.160" video="mainVideo-maint" id="subtitle"]] -[[!template text="And I say this from the perspective of having" start="00:04:33.400" video="mainVideo-maint" id="subtitle"]] -[[!template text="an admiration for the efficiency of capitalism." start="00:04:36.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="So understand that that is my perspective" start="00:04:39.800" video="mainVideo-maint" id="subtitle"]] -[[!template text="when I say that this system --" start="00:04:43.400" video="mainVideo-maint" id="subtitle"]] -[[!template text="an attribution-based economic system --" start="00:04:45.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="is significantly more efficient than capitalism." start="00:04:47.480" video="mainVideo-maint" id="subtitle"]] -[[!template text="And it achieves that by virtue of eliminating the waste" start="00:04:51.160" video="mainVideo-maint" id="subtitle"]] -[[!template text="that is inherent in adversarial competition," start="00:04:55.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="while still preserving market forces!" start="00:04:58.480" video="mainVideo-maint" id="subtitle"]] -[[!template new="1" text="In addition to this property" start="00:05:01.760" video="mainVideo-maint" id="subtitle"]] -[[!template text="there is also this other property" start="00:05:05.160" video="mainVideo-maint" id="subtitle"]] -[[!template text="that I think is truly profound," start="00:05:07.160" video="mainVideo-maint" id="subtitle"]] -[[!template text="and I want to motivate it by this example of a gyroscope." start="00:05:10.600" video="mainVideo-maint" id="subtitle"]] -[[!template text="Now many of us have had the opportunity to play with" start="00:05:15.880" video="mainVideo-maint" id="subtitle"]] -[[!template text="a gyroscope at some point in our lives." start="00:05:19.400" video="mainVideo-maint" id="subtitle"]] -[[!template text="If you haven't, I encourage you to go out and get one" start="00:05:21.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="and try it out. It also makes a good gift" start="00:05:23.480" video="mainVideo-maint" id="subtitle"]] -[[!template text="if you're thinking about giving it" start="00:05:25.800" video="mainVideo-maint" id="subtitle"]] -[[!template text="to somebody else this year." start="00:05:27.000" video="mainVideo-maint" id="subtitle"]] -[[!template text="But if you've played with a gyroscope" start="00:05:28.480" video="mainVideo-maint" id="subtitle"]] -[[!template text="then you've had the experience, perhaps," start="00:05:32.560" video="mainVideo-maint" id="subtitle"]] -[[!template text="of putting it on your hand and moving it around." start="00:05:35.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="And no matter what you do, it will always maintain its axis." start="00:05:37.920" video="mainVideo-maint" id="subtitle"]] -[[!template text="Even if you try to push it" start="00:05:42.800" video="mainVideo-maint" id="subtitle"]] -[[!template text="and try to make it deviate from that axis," start="00:05:45.520" video="mainVideo-maint" id="subtitle"]] -[[!template text="it will fight you. It will resist you," start="00:05:48.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="and keep to that axis no matter what." start="00:05:50.400" video="mainVideo-maint" id="subtitle"]] -[[!template text="And if you've had this experience," start="00:05:53.040" video="mainVideo-maint" id="subtitle"]] -[[!template text="then believe it or not," start="00:05:56.640" video="mainVideo-maint" id="subtitle"]] -[[!template text="you have some insight into the nature of economic systems." start="00:05:58.040" video="mainVideo-maint" id="subtitle"]] -[[!template text="Because if we try to get an economic system to do something" start="00:06:02.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="other than what it wants to do," start="00:06:07.040" video="mainVideo-maint" id="subtitle"]] -[[!template text="other than what is its nature," start="00:06:09.280" video="mainVideo-maint" id="subtitle"]] -[[!template text="then it will resist us and it will fight that change." start="00:06:11.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="Now, I don't know about you," start="00:06:14.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="but I'd prefer to avoid fighting these gyroscopic forces." start="00:06:17.760" video="mainVideo-maint" id="subtitle"]] -[[!template text="I'd rather have these forces work with me" start="00:06:22.720" video="mainVideo-maint" id="subtitle"]] -[[!template text="rather than against me. Now in a capitalist system," start="00:06:25.040" video="mainVideo-maint" id="subtitle"]] -[[!template text="there is another problem, which is that" start="00:06:29.480" video="mainVideo-maint" id="subtitle"]] -[[!template text="not only do you have these gyroscopic forces at work," start="00:06:32.600" video="mainVideo-maint" id="subtitle"]] -[[!template text="but these forces aren't even all working together." start="00:06:35.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="They're working against each other, in many cases." start="00:06:39.160" video="mainVideo-maint" id="subtitle"]] -[[!template text="They represent misaligned interests." start="00:06:42.120" video="mainVideo-maint" id="subtitle"]] -[[!template text="And indeed, these misaligned interests" start="00:06:46.440" video="mainVideo-maint" id="subtitle"]] -[[!template text="are the very means by which these forces operate at all." start="00:06:50.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="So in a way, war is not just" start="00:06:53.640" video="mainVideo-maint" id="subtitle"]] -[[!template text="an inevitable consequence in this system" start="00:06:57.560" video="mainVideo-maint" id="subtitle"]] -[[!template text="but is rather the very nature of such a system." start="00:06:59.680" video="mainVideo-maint" id="subtitle"]] -[[!template text="In an attribution-based system, on the other hand," start="00:07:05.280" video="mainVideo-maint" id="subtitle"]] -[[!template text="by virtue of the source of value" start="00:07:08.360" video="mainVideo-maint" id="subtitle"]] -[[!template text="being collective attribution," start="00:07:11.400" video="mainVideo-maint" id="subtitle"]] -[[!template text="we are able to achieve alignment" start="00:07:13.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="of all of these interests at every scale," start="00:07:17.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="so that at every scale of society," start="00:07:19.680" video="mainVideo-maint" id="subtitle"]] -[[!template text="from the smallest to the largest scales," start="00:07:22.720" video="mainVideo-maint" id="subtitle"]] -[[!template text="the interests will be aligned," start="00:07:24.760" video="mainVideo-maint" id="subtitle"]] -[[!template text="will be consonant and harmonious." start="00:07:26.480" video="mainVideo-maint" id="subtitle"]] -[[!template text="I think this is a very important, profound quality" start="00:07:28.560" video="mainVideo-maint" id="subtitle"]] -[[!template text="that I think is the fundamental problem of economics -" start="00:07:33.800" video="mainVideo-maint" id="subtitle"]] -[[!template text="the fundamental goal of economics to solve." start="00:07:38.120" video="mainVideo-maint" id="subtitle"]] -[[!template text="And I believe that an attribution-based economic system" start="00:07:40.480" video="mainVideo-maint" id="subtitle"]] -[[!template text="addresses it and solves it." start="00:07:43.840" video="mainVideo-maint" id="subtitle"]] -[[!template new="1" text="So without further ado, I want to bring it home" start="00:07:45.200" video="mainVideo-maint" id="subtitle"]] -[[!template text="to the prototype that we have in mind" start="00:07:50.280" video="mainVideo-maint" id="subtitle"]] -[[!template text="for the Emacs community." start="00:07:52.480" video="mainVideo-maint" id="subtitle"]] -[[!template text="Now we want to start in the Emacs community" start="00:07:53.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="because Emacs has a long tradition" start="00:07:56.280" video="mainVideo-maint" id="subtitle"]] -[[!template text="of exploring better ways of doing things" start="00:07:58.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="and pursuing better alternatives to the status quo." start="00:08:02.160" video="mainVideo-maint" id="subtitle"]] -[[!template text="Now, to give you an overview of the prototype" start="00:08:05.280" video="mainVideo-maint" id="subtitle"]] -[[!template text="that we've implemented for open source projects." start="00:08:09.400" video="mainVideo-maint" id="subtitle"]] -[[!template text="The prototype is composed of two broad phases," start="00:08:12.640" video="mainVideo-maint" id="subtitle"]] -[[!template text="that is, the appraisal phase and the accounting phase." start="00:08:15.440" video="mainVideo-maint" id="subtitle"]] -[[!template text="Any project is composed of ideas, capital and labor." start="00:08:18.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="The appraisal phase is involved in assessing the work done" start="00:08:21.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="in terms of how much value was created" start="00:08:26.280" video="mainVideo-maint" id="subtitle"]] -[[!template text="and who created the value and how important that value is." start="00:08:29.120" video="mainVideo-maint" id="subtitle"]] -[[!template text="The output of this stage is an attributions file." start="00:08:31.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="And the second phase, of accounting, is about, you know," start="00:08:35.200" video="mainVideo-maint" id="subtitle"]] -[[!template text="how do you handle payments that come in" start="00:08:42.040" video="mainVideo-maint" id="subtitle"]] -[[!template text="and how do you pay people out." start="00:08:43.680" video="mainVideo-maint" id="subtitle"]] -[[!template text="Now the first part has more of a social component to it" start="00:08:45.120" video="mainVideo-maint" id="subtitle"]] -[[!template text="and the second part has more of" start="00:08:48.880" video="mainVideo-maint" id="subtitle"]] -[[!template text="a technological component to it that can be automated." start="00:08:50.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="So in order to implement this prototype," start="00:08:53.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="we have two things." start="00:08:56.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="We have founding documents that describe the social aspects," start="00:08:57.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="and an accounting system that automates" start="00:09:01.680" video="mainVideo-maint" id="subtitle"]] -[[!template text="some of the technological aspects." start="00:09:04.040" video="mainVideo-maint" id="subtitle"]] -[[!template new="1" text="The founding documents, in the noble tradition" start="00:09:05.920" video="mainVideo-maint" id="subtitle"]] -[[!template text="of the Gayaneshagowa and the US constitution," start="00:09:10.800" video="mainVideo-maint" id="subtitle"]] -[[!template text="include a constitution which describes" start="00:09:14.560" video="mainVideo-maint" id="subtitle"]] -[[!template text="the guiding principles of ABE," start="00:09:17.800" video="mainVideo-maint" id="subtitle"]] -[[!template text="and the two main prongs are forward-looking empowerment" start="00:09:20.680" video="mainVideo-maint" id="subtitle"]] -[[!template text="and backward-looking fairness." start="00:09:25.400" video="mainVideo-maint" id="subtitle"]] -[[!template text="This means that we want to empower" start="00:09:26.640" video="mainVideo-maint" id="subtitle"]] -[[!template text="those individuals and groups" start="00:09:28.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="that are most likely to create value in the future," start="00:09:31.600" video="mainVideo-maint" id="subtitle"]] -[[!template text="while also recognizing and fairly compensating" start="00:09:33.600" video="mainVideo-maint" id="subtitle"]] -[[!template text="those who've created value in the past," start="00:09:36.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="to set a good example and incentivize others" start="00:09:38.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="to take chances in creating value." start="00:09:41.920" video="mainVideo-maint" id="subtitle"]] -[[!template text="And it describes high level principles of" start="00:09:45.560" video="mainVideo-maint" id="subtitle"]] -[[!template text="dialectical inheritance attribution" start="00:09:50.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="as proceeding by means of" start="00:09:52.120" video="mainVideo-maint" id="subtitle"]] -[[!template text="common, collectively agreed-upon standards" start="00:09:53.880" video="mainVideo-maint" id="subtitle"]] -[[!template text="that are applied to all." start="00:09:56.000" video="mainVideo-maint" id="subtitle"]] -[[!template text="And the key thing here is these improvements feed back" start="00:09:56.920" video="mainVideo-maint" id="subtitle"]] -[[!template text="to the whole and apply to everyone." start="00:09:59.760" video="mainVideo-maint" id="subtitle"]] -[[!template text="And this is an important quality" start="00:10:01.920" video="mainVideo-maint" id="subtitle"]] -[[!template text="to ensuring fairness and accuracy." start="00:10:03.640" video="mainVideo-maint" id="subtitle"]] -[[!template new="1" text="There's also a declaration of non-ownership." start="00:10:05.920" video="mainVideo-maint" id="subtitle"]] -[[!template text="We saw already that ownership is an overused institution." start="00:10:09.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="This just codifies that and allows us to shed" start="00:10:13.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="the baggage of this idea of ownership" start="00:10:20.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="where it doesn't make any sense." start="00:10:22.440" video="mainVideo-maint" id="subtitle"]] -[[!template new="1" text="A third document is the financial model" start="00:10:24.320" video="mainVideo-maint" id="subtitle"]] -[[!template text="which describes how payments are to be treated," start="00:10:28.160" video="mainVideo-maint" id="subtitle"]] -[[!template text="and a key idea here is that when you pay money" start="00:10:31.320" video="mainVideo-maint" id="subtitle"]] -[[!template text="to an open source project, you know," start="00:10:34.160" video="mainVideo-maint" id="subtitle"]] -[[!template text="today you don't really have an incentive to do so," start="00:10:37.360" video="mainVideo-maint" id="subtitle"]] -[[!template text="and it essentially is kind of like a donation." start="00:10:40.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="But in this model, in an attribution-based model," start="00:10:42.440" video="mainVideo-maint" id="subtitle"]] -[[!template text="when you pay money to a project," start="00:10:46.000" video="mainVideo-maint" id="subtitle"]] -[[!template text="you're creating value in a way." start="00:10:48.120" video="mainVideo-maint" id="subtitle"]] -[[!template text="You're contributing value to the project" start="00:10:50.000" video="mainVideo-maint" id="subtitle"]] -[[!template text="and that itself is attributable." start="00:10:51.600" video="mainVideo-maint" id="subtitle"]] -[[!template text="And the manner in which we'll treat this" start="00:10:53.280" video="mainVideo-maint" id="subtitle"]] -[[!template text="is in terms of the fair market price that, again," start="00:10:56.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="we agree upon collectively." start="00:10:58.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="And any payment that exceeds the fair market price" start="00:11:00.200" video="mainVideo-maint" id="subtitle"]] -[[!template text="is going to be treated as investment." start="00:11:04.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="And the goal here for this financial model" start="00:11:06.400" video="mainVideo-maint" id="subtitle"]] -[[!template text="is for the system to be self-sustaining," start="00:11:10.200" video="mainVideo-maint" id="subtitle"]] -[[!template text="so I think there are many open problems here" start="00:11:11.880" video="mainVideo-maint" id="subtitle"]] -[[!template text="and any finance experts or any other experts" start="00:11:15.440" video="mainVideo-maint" id="subtitle"]] -[[!template text="who are interested in contributing here," start="00:11:18.440" video="mainVideo-maint" id="subtitle"]] -[[!template text="your help is needed, certainly." start="00:11:21.480" video="mainVideo-maint" id="subtitle"]] -[[!template new="1" text="There's also an attribution model document," start="00:11:23.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="which describes some of the theoretical ideas" start="00:11:26.760" video="mainVideo-maint" id="subtitle"]] -[[!template text="that would guide dialectical inheritance attribution," start="00:11:29.000" video="mainVideo-maint" id="subtitle"]] -[[!template text="and there are many interesting ideas here." start="00:11:33.480" video="mainVideo-maint" id="subtitle"]] -[[!template text="One that I'd like to mention is "backpropagation,"" start="00:11:36.920" video="mainVideo-maint" id="subtitle"]] -[[!template text="which is the idea that" start="00:11:40.360" video="mainVideo-maint" id="subtitle"]] -[[!template text="as we're improving the standards over time" start="00:11:42.560" video="mainVideo-maint" id="subtitle"]] -[[!template text="and they're likely to get more accurate and fair over time," start="00:11:45.200" video="mainVideo-maint" id="subtitle"]] -[[!template text="we'd like these more accurate and fair standards" start="00:11:48.280" video="mainVideo-maint" id="subtitle"]] -[[!template text="to "backpropagate" and calibrate the value assignments" start="00:11:51.560" video="mainVideo-maint" id="subtitle"]] -[[!template text="that were done in the past." start="00:11:56.520" video="mainVideo-maint" id="subtitle"]] -[[!template text="And this means that some people might have been" start="00:11:57.800" video="mainVideo-maint" id="subtitle"]] -[[!template text="underpaid in the past" start="00:12:01.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="and we would pay them what they were underpaid," start="00:12:02.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="or the balance," start="00:12:05.200" video="mainVideo-maint" id="subtitle"]] -[[!template text="and some people may have been overpaid." start="00:12:06.480" video="mainVideo-maint" id="subtitle"]] -[[!template text="Now in that case we're not going to go and say," start="00:12:08.840" video="mainVideo-maint" id="subtitle"]] -[[!template text=""hey we overpaid you, give us the money back."" start="00:12:11.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="Instead the system as a whole is going to bear" start="00:12:14.440" video="mainVideo-maint" id="subtitle"]] -[[!template text="the cost of being wrong," start="00:12:18.200" video="mainVideo-maint" id="subtitle"]] -[[!template text="and so it's kind of an insurance policy." start="00:12:19.520" video="mainVideo-maint" id="subtitle"]] -[[!template text="But I think another more interesting quality here is that" start="00:12:22.160" video="mainVideo-maint" id="subtitle"]] -[[!template text="the system in practice wouldn't really" start="00:12:25.600" video="mainVideo-maint" id="subtitle"]] -[[!template text="absorb any negative impact here" start="00:12:29.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="because there is an incentive" start="00:12:33.000" video="mainVideo-maint" id="subtitle"]] -[[!template text="for these people who've been overpaid" start="00:12:34.320" video="mainVideo-maint" id="subtitle"]] -[[!template text="to reinvest that money." start="00:12:37.600" video="mainVideo-maint" id="subtitle"]] -[[!template text="So I think they would want to invest the money" start="00:12:38.800" video="mainVideo-maint" id="subtitle"]] -[[!template text="in other places that the system has valued" start="00:12:42.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="as being valuable and showing potential." start="00:12:45.520" video="mainVideo-maint" id="subtitle"]] -[[!template new="1" text="The second component of the implementation" start="00:12:49.120" video="mainVideo-maint" id="subtitle"]] -[[!template text="is the accounting system. All accounting is public." start="00:12:54.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="All payments into the repo are public" start="00:12:58.600" video="mainVideo-maint" id="subtitle"]] -[[!template text="and all payments out of the project are also public." start="00:13:00.880" video="mainVideo-maint" id="subtitle"]] -[[!template text="We can do some things for privacy," start="00:13:03.400" video="mainVideo-maint" id="subtitle"]] -[[!template text="and again, the basis of this system is dialogue." start="00:13:05.480" video="mainVideo-maint" id="subtitle"]] -[[!template text="It's not a fundamentally technologically system." start="00:13:08.520" video="mainVideo-maint" id="subtitle"]] -[[!template text="It's a fundamentally dialogue-based system," start="00:13:10.760" video="mainVideo-maint" id="subtitle"]] -[[!template text="and that, to be honest with you, is everything." start="00:13:12.800" video="mainVideo-maint" id="subtitle"]] -[[!template text="It's all systems that we have in place." start="00:13:14.760" video="mainVideo-maint" id="subtitle"]] -[[!template text="But by embracing that, it means that" start="00:13:17.000" video="mainVideo-maint" id="subtitle"]] -[[!template text="we can do whatever we want to do by discussion," start="00:13:21.120" video="mainVideo-maint" id="subtitle"]] -[[!template text="and if there's something" start="00:13:25.040" video="mainVideo-maint" id="subtitle"]] -[[!template text="that we cannot achieve in a technological way," start="00:13:26.040" video="mainVideo-maint" id="subtitle"]] -[[!template text="we'll achieve it in a non-technological way." start="00:13:27.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="But anyway, the point is, all accounting is public," start="00:13:30.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="and text files in the repository" start="00:13:36.000" video="mainVideo-maint" id="subtitle"]] -[[!template text="form the inputs and outputs of the accounting system" start="00:13:40.400" video="mainVideo-maint" id="subtitle"]] -[[!template text="which is implemented as a GitHub action." start="00:13:43.920" video="mainVideo-maint" id="subtitle"]] -[[!template text="So typically a source repository will have" start="00:13:48.880" video="mainVideo-maint" id="subtitle"]] -[[!template text="an ABE folder containing these three inputs:" start="00:13:51.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="attributions, payments," start="00:13:54.120" video="mainVideo-maint" id="subtitle"]] -[[!template text="and payouts. And we'll see how that works." start="00:13:55.600" video="mainVideo-maint" id="subtitle"]] -[[!template new="1" text="This is the drym.org Github organization account." start="00:13:59.920" video="mainVideo-maint" id="subtitle"]] -[[!template text="This is an example of a repository that uses" start="00:14:04.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="the GitHub action accounting system." start="00:14:09.600" video="mainVideo-maint" id="subtitle"]] -[[!template text="So there will be a payments folder, a payouts folder," start="00:14:12.440" video="mainVideo-maint" id="subtitle"]] -[[!template text="as well as an attributions file." start="00:14:16.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="The payments: essentially each file" start="00:14:18.640" video="mainVideo-maint" id="subtitle"]] -[[!template text="just represents a payment that's made to the repository." start="00:14:23.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="Payouts is the same except it's payments" start="00:14:26.760" video="mainVideo-maint" id="subtitle"]] -[[!template text="made by the admins of the repository to contributors." start="00:14:29.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="And the attributions file breaks down" start="00:14:32.360" video="mainVideo-maint" id="subtitle"]] -[[!template text="the attribution of the value in the repository" start="00:14:37.160" video="mainVideo-maint" id="subtitle"]] -[[!template text="by contributor. And then the billing system runs" start="00:14:40.680" video="mainVideo-maint" id="subtitle"]] -[[!template text="on every relevant commit," start="00:14:47.560" video="mainVideo-maint" id="subtitle"]] -[[!template text="which is typically changes to the ABE folder," start="00:14:50.360" video="mainVideo-maint" id="subtitle"]] -[[!template text="generates a set of transactions" start="00:14:53.680" video="mainVideo-maint" id="subtitle"]] -[[!template text="that are owed to various people from various payments," start="00:14:57.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="and then creates an issue with the outstanding balances" start="00:15:00.520" video="mainVideo-maint" id="subtitle"]] -[[!template text="that need to be paid out to contributors," start="00:15:05.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="and tells you what those balances are." start="00:15:07.280" video="mainVideo-maint" id="subtitle"]] -[[!template text="So for repository or project maintainers," start="00:15:09.520" video="mainVideo-maint" id="subtitle"]] -[[!template text="it automates all these accounting details" start="00:15:11.800" video="mainVideo-maint" id="subtitle"]] -[[!template text="and you just have to worry about fulfilling the payments." start="00:15:14.880" video="mainVideo-maint" id="subtitle"]] -[[!template new="1" text="An interesting property of the prototype" start="00:15:17.600" video="mainVideo-maint" id="subtitle"]] -[[!template text="is that boundary incentives expand the boundary," start="00:15:23.520" video="mainVideo-maint" id="subtitle"]] -[[!template text="and that is that the incentives in the system" start="00:15:28.400" video="mainVideo-maint" id="subtitle"]] -[[!template text="are so constructed that those on the periphery" start="00:15:33.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="of the attribution-based economic system" start="00:15:38.440" video="mainVideo-maint" id="subtitle"]] -[[!template text="have an incentive to join in." start="00:15:40.440" video="mainVideo-maint" id="subtitle"]] -[[!template text="And we'll see how that works." start="00:15:42.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="Well, as I mentioned, we're starting this prototype" start="00:15:45.520" video="mainVideo-maint" id="subtitle"]] -[[!template text="in the Emacs community with the" start="00:15:51.360" video="mainVideo-maint" id="subtitle"]] -[[!template text="Symex repo. Symex is a structural editing package," start="00:15:52.920" video="mainVideo-maint" id="subtitle"]] -[[!template text="and this prototype will recognize direct contributors" start="00:15:59.600" video="mainVideo-maint" id="subtitle"]] -[[!template text="as well as antecedents and related projects" start="00:16:05.320" video="mainVideo-maint" id="subtitle"]] -[[!template text="through the process of collective attribution." start="00:16:08.160" video="mainVideo-maint" id="subtitle"]] -[[!template text="We all decide how financial contributions to the Symex repo" start="00:16:09.800" video="mainVideo-maint" id="subtitle"]] -[[!template text="are going to be distributed to the direct contributors" start="00:16:14.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="as well as to antecedents and related projects." start="00:16:18.760" video="mainVideo-maint" id="subtitle"]] -[[!template text="So the power is yours!" start="00:16:21.040" video="mainVideo-maint" id="subtitle"]] -[[!template text="And that's what I meant when I said" start="00:16:23.680" video="mainVideo-maint" id="subtitle"]] -[[!template text="that the boundary incentives expand the boundary," start="00:16:27.160" video="mainVideo-maint" id="subtitle"]] -[[!template text="because projects that we agree are owed money" start="00:16:29.520" video="mainVideo-maint" id="subtitle"]] -[[!template text="from the Symex repo now would have an incentive to join," start="00:16:32.360" video="mainVideo-maint" id="subtitle"]] -[[!template text="because once they join they would get that money." start="00:16:37.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="And we'll also be implementing this in the" start="00:16:39.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="Racket community. Racket is a Scheme dialect," start="00:16:43.200" video="mainVideo-maint" id="subtitle"]] -[[!template text="and Emacs has great support for Racket in Racket Mode" start="00:16:47.200" video="mainVideo-maint" id="subtitle"]] -[[!template text="so I encourage you to try it." start="00:16:50.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="And we'll be prototyping it in the Qi repository." start="00:16:52.160" video="mainVideo-maint" id="subtitle"]] -[[!template text="Qi is a language written in Racket which is, you know," start="00:16:56.000" video="mainVideo-maint" id="subtitle"]] -[[!template text="it's for functional programming and things like that." start="00:16:59.600" video="mainVideo-maint" id="subtitle"]] -[[!template text="And once again, we'll recognize direct contributors" start="00:17:02.720" video="mainVideo-maint" id="subtitle"]] -[[!template text="as well as antecedents and we all decide" start="00:17:06.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="and agree on how those are done." start="00:17:09.240" video="mainVideo-maint" id="subtitle"]] -[[!template new="1" text="So how do you adopt this?" start="00:17:11.560" video="mainVideo-maint" id="subtitle"]] -[[!template text="You can add the github action to a repo" start="00:17:14.120" video="mainVideo-maint" id="subtitle"]] -[[!template text="that you are a maintainer of." start="00:17:18.560" video="mainVideo-maint" id="subtitle"]] -[[!template text="You can financially support an ABE project." start="00:17:20.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="This is important to do" start="00:17:23.320" video="mainVideo-maint" id="subtitle"]] -[[!template text="because the system won't get started" start="00:17:25.200" video="mainVideo-maint" id="subtitle"]] -[[!template text="without money as an input." start="00:17:26.920" video="mainVideo-maint" id="subtitle"]] -[[!template text="And it also has network effects, as we saw -" start="00:17:28.120" video="mainVideo-maint" id="subtitle"]] -[[!template text="the more money you contribute," start="00:17:31.120" video="mainVideo-maint" id="subtitle"]] -[[!template text="the more incentive there is" start="00:17:33.480" video="mainVideo-maint" id="subtitle"]] -[[!template text="for other people to join the system." start="00:17:35.240" video="mainVideo-maint" id="subtitle"]] -[[!template text="And contributions are also attributable," start="00:17:36.800" video="mainVideo-maint" id="subtitle"]] -[[!template text="as we said earlier." start="00:17:39.880" video="mainVideo-maint" id="subtitle"]] -[[!template text="Some of them can be treated as investments." start="00:17:41.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="Any help you can provide with funding" start="00:17:43.720" video="mainVideo-maint" id="subtitle"]] -[[!template text="would be attributable and very helpful, of course." start="00:17:48.000" video="mainVideo-maint" id="subtitle"]] -[[!template text="And yeah, if you can help us achieve" start="00:17:50.520" video="mainVideo-maint" id="subtitle"]] -[[!template text="the goal of self-sufficiency" start="00:17:54.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="without relying on capitalist entry points," start="00:17:55.840" video="mainVideo-maint" id="subtitle"]] -[[!template text="that would be very helpful as well." start="00:17:59.040" video="mainVideo-maint" id="subtitle"]] -[[!template text="I'd like to acknowledge the help of many individuals" start="00:18:01.760" video="mainVideo-maint" id="subtitle"]] -[[!template text="for this presentation" start="00:18:06.320" video="mainVideo-maint" id="subtitle"]] -[[!template text="as well as many of the supporting things" start="00:18:09.400" video="mainVideo-maint" id="subtitle"]] -[[!template text="that have gone on behind the scenes for years." start="00:18:12.760" video="mainVideo-maint" id="subtitle"]] -[[!template text="And in particular for now I want to mention" start="00:18:14.920" video="mainVideo-maint" id="subtitle"]] -[[!template text="Jair and Ariana who wrote the accounting system" start="00:18:19.680" video="mainVideo-maint" id="subtitle"]] -[[!template text="that we saw earlier, and Salim who encouraged me" start="00:18:25.560" video="mainVideo-maint" id="subtitle"]] -[[!template text="to take this social approach to the prototype." start="00:18:28.320" video="mainVideo-maint" id="subtitle"]] -[[!template text="And so many more people who have believed and invested" start="00:18:32.800" video="mainVideo-maint" id="subtitle"]] -[[!template text="in the cause of "attribution, not ownership!"" start="00:18:36.560" video="mainVideo-maint" id="subtitle"]] -[[!template new="1" text="I want to leave you with this closing thought." start="00:18:39.160" video="mainVideo-maint" id="subtitle"]] -[[!template text="The electromagnetic attraction between two objects" start="00:18:42.760" video="mainVideo-maint" id="subtitle"]] -[[!template text="is 10^42 stronger (!) than the gravitational attraction" start="00:18:46.160" video="mainVideo-maint" id="subtitle"]] -[[!template text="between these same objects." start="00:18:49.920" video="mainVideo-maint" id="subtitle"]] -[[!template text="And yet, a stone falls to the Earth" start="00:18:51.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="under the influence of gravity, not magnetism." start="00:18:53.880" video="mainVideo-maint" id="subtitle"]] -[[!template text="The reason is that the e/m forces are polarized," start="00:18:56.680" video="mainVideo-maint" id="subtitle"]] -[[!template text="much like our world, and cancel each other out." start="00:19:00.880" video="mainVideo-maint" id="subtitle"]] -[[!template new="1" text="Now in this world, we are told" start="00:19:04.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="that we should look out for ourselves" start="00:19:07.720" video="mainVideo-maint" id="subtitle"]] -[[!template text="because no one is going to look out for us." start="00:19:09.560" video="mainVideo-maint" id="subtitle"]] -[[!template text="That we should take care of our own" start="00:19:11.880" video="mainVideo-maint" id="subtitle"]] -[[!template text="because we can't rely on others to care." start="00:19:14.040" video="mainVideo-maint" id="subtitle"]] -[[!template text="An attribution-based economy is nothing like that." start="00:19:17.360" video="mainVideo-maint" id="subtitle"]] -[[!template text="We care about each other," start="00:19:22.480" video="mainVideo-maint" id="subtitle"]] -[[!template text="we take care of each other," start="00:19:23.960" video="mainVideo-maint" id="subtitle"]] -[[!template text="because taking care of one another is valuable," start="00:19:25.440" video="mainVideo-maint" id="subtitle"]] -[[!template text="and an attribution-based economic system" start="00:19:29.880" video="mainVideo-maint" id="subtitle"]] -[[!template text="is capable of recognizing that value, in financial terms." start="00:19:32.560" video="mainVideo-maint" id="subtitle"]] -[[!template text="And as a result, we are safe in the embrace of the world." start="00:19:39.080" video="mainVideo-maint" id="subtitle"]] -[[!template text="So, um, yeah. Let's go!" start="00:19:43.880" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""When we think about the problems of the world""" start="00:00:00.000" video="mainVideo-maint" id="subtitle"]] +[[!template text="""we see global warming, war, appropriation, poverty,""" start="00:00:06.320" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and among numerous other problems,""" start="00:00:12.120" video="mainVideo-maint" id="subtitle"]] +[[!template text="""also the inability to make a living""" start="00:00:13.880" video="mainVideo-maint" id="subtitle"]] +[[!template text="""as an open source developer.""" start="00:00:16.200" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""Now this last problem may seem a lot less consequential""" start="00:00:18.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""compared to the other ones,""" start="00:00:22.000" video="mainVideo-maint" id="subtitle"]] +[[!template text="""but what if I told you that the solution to this problem""" start="00:00:23.480" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and the solutions to the others are one and the same?""" start="00:00:26.760" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""And it's because there's a common underlying problem""" start="00:00:30.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""at the heart of all of these problems.""" start="00:00:33.480" video="mainVideo-maint" id="subtitle"]] +[[!template text="""I'm going to tell you what that problem is in one sentence.""" start="00:00:36.120" video="mainVideo-maint" id="subtitle"]] +[[!template text="""You ready for it? It is ...""" start="00:00:39.280" video="mainVideo-maint" id="subtitle"]] +[[!template text="""the deviation of market value from _true_ value.""" start="00:00:42.520" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Let's think about this in the context of""" start="00:00:48.560" video="mainVideo-maint" id="subtitle"]] +[[!template text="""existing economic systems such as capitalism and communism.""" start="00:00:50.440" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""And of these, I want to focus on capitalism""" start="00:00:55.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""because it is the only nontrivial economic system, really.""" start="00:00:58.680" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Communism is more sort of a political means""" start="00:01:02.000" video="mainVideo-maint" id="subtitle"]] +[[!template text="""to achieve economic ends.""" start="00:01:04.800" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And the other economic systems exist""" start="00:01:07.000" video="mainVideo-maint" id="subtitle"]] +[[!template text="""sort of on a spectrum between these two.""" start="00:01:09.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""So let's focus on capitalism.""" start="00:01:11.680" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Capitalism has as its basis of value supply and demand.""" start="00:01:14.320" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And consequently, there is a great emphasis""" start="00:01:19.920" video="mainVideo-maint" id="subtitle"]] +[[!template text="""on this idea of ownership.""" start="00:01:21.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Now ownership is an idea that made some kind of sense""" start="00:01:25.200" video="mainVideo-maint" id="subtitle"]] +[[!template text="""when you have goods and services""" start="00:01:28.720" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that are constrained in some way,""" start="00:01:31.560" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that are essentially finite in supply.""" start="00:01:33.120" video="mainVideo-maint" id="subtitle"]] +[[!template text="""But when you have things like""" start="00:01:36.120" video="mainVideo-maint" id="subtitle"]] +[[!template text="""works of software, art, and music,""" start="00:01:37.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""which are essentially infinite in supply,""" start="00:01:41.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""the idea of ownership and supply and demand""" start="00:01:43.880" video="mainVideo-maint" id="subtitle"]] +[[!template text="""don't make sense anymore.""" start="00:01:46.360" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And yet we employ the institution of property""" start="00:01:48.320" video="mainVideo-maint" id="subtitle"]] +[[!template text="""to constrain supply and introduce the idea of supply""" start="00:01:51.680" video="mainVideo-maint" id="subtitle"]] +[[!template text="""just so that we can induce a market value""" start="00:01:56.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""in terms of supply and demand""" start="00:01:58.400" video="mainVideo-maint" id="subtitle"]] +[[!template text="""in a capitalist economic system. And it's wrongheaded.""" start="00:02:00.320" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""How many of us have written copyright declarations""" start="00:02:05.760" video="mainVideo-maint" id="subtitle"]] +[[!template text="""like these on our work.""" start="00:02:10.320" video="mainVideo-maint" id="subtitle"]] +[[!template text="""It's a lot of work!""" start="00:02:12.920" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Especially when we have version control.""" start="00:02:14.720" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Now in this example,""" start="00:02:18.160" video="mainVideo-maint" id="subtitle"]] +[[!template text="""almost every line is written by a different person,""" start="00:02:19.880" video="mainVideo-maint" id="subtitle"]] +[[!template text="""so who owns the code in this case?""" start="00:02:23.120" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Who owns the copyright here?""" start="00:02:25.520" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Is it some of them, is it all of them,""" start="00:02:27.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""do they share it in some way?""" start="00:02:30.040" video="mainVideo-maint" id="subtitle"]] +[[!template text="""It doesn't really make sense,""" start="00:02:32.880" video="mainVideo-maint" id="subtitle"]] +[[!template text="""especially when the reason we're employing""" start="00:02:34.880" video="mainVideo-maint" id="subtitle"]] +[[!template text="""copyright and ownership in this case""" start="00:02:37.760" video="mainVideo-maint" id="subtitle"]] +[[!template text="""is to approximate the idea of attribution,""" start="00:02:40.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""which is what we really care about here.""" start="00:02:44.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And that brings us to the nature of the solution,""" start="00:02:46.560" video="mainVideo-maint" id="subtitle"]] +[[!template text="""which is to move away from an economic system""" start="00:02:51.000" video="mainVideo-maint" id="subtitle"]] +[[!template text="""based on ownership and supply and demand,""" start="00:02:53.160" video="mainVideo-maint" id="subtitle"]] +[[!template text="""to an economic system based on attribution, instead.""" start="00:02:55.880" video="mainVideo-maint" id="subtitle"]] +[[!template text="""That is, moving away from who _owns_ what""" start="00:02:59.400" video="mainVideo-maint" id="subtitle"]] +[[!template text="""to who _did_ what and how important was it.""" start="00:03:02.480" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And we can do this by the process of""" start="00:03:07.320" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Dialectical Inheritance Attribution,""" start="00:03:09.720" video="mainVideo-maint" id="subtitle"]] +[[!template text="""which just means that we do it in a collective way""" start="00:03:12.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""using common collectively agreed upon standards""" start="00:03:16.640" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that are applied transparently to all.""" start="00:03:20.640" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And when we have an economic system""" start="00:03:24.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that is based on attribution""" start="00:03:25.600" video="mainVideo-maint" id="subtitle"]] +[[!template text="""as the source of value in this way,""" start="00:03:26.920" video="mainVideo-maint" id="subtitle"]] +[[!template text="""we call it attribution based economics.""" start="00:03:28.800" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Now, once we have that, it gives us fairness,""" start="00:03:34.720" video="mainVideo-maint" id="subtitle"]] +[[!template text="""effective empowerment of expertise,""" start="00:03:39.280" video="mainVideo-maint" id="subtitle"]] +[[!template text="""freedom through incentives rather than through coercion.""" start="00:03:43.640" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And privacy as well.""" start="00:03:46.360" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""But I could tell you all of those things""" start="00:03:49.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and some may still say, "Why should I care about this?"""" start="00:03:52.360" video="mainVideo-maint" id="subtitle"]] +[[!template text="""There are those who would say""" start="00:03:57.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that fairness is not a good goal,""" start="00:03:58.280" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and that might makes right,""" start="00:04:00.680" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and that as Darwin showed us,""" start="00:04:03.000" video="mainVideo-maint" id="subtitle"]] +[[!template text="""the nature of nature is violence.""" start="00:04:04.600" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Now I know that many of us reject this ideology,""" start="00:04:09.000" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and we feel in our bones that it is wrong.""" start="00:04:12.440" video="mainVideo-maint" id="subtitle"]] +[[!template text="""But luckily we don't have to resort to high philosophy""" start="00:04:16.360" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and gut feeling in order to convince ourselves""" start="00:04:19.280" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that an attribution-based system is truly better.""" start="00:04:21.760" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Because in addition to all of""" start="00:04:24.720" video="mainVideo-maint" id="subtitle"]] +[[!template text="""those other properties we talked about,""" start="00:04:26.680" video="mainVideo-maint" id="subtitle"]] +[[!template text="""an attribution-based economic system is also efficient.""" start="00:04:28.160" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And I say this from the perspective of having""" start="00:04:33.400" video="mainVideo-maint" id="subtitle"]] +[[!template text="""an admiration for the efficiency of capitalism.""" start="00:04:36.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""So understand that that is my perspective""" start="00:04:39.800" video="mainVideo-maint" id="subtitle"]] +[[!template text="""when I say that this system --""" start="00:04:43.400" video="mainVideo-maint" id="subtitle"]] +[[!template text="""an attribution-based economic system --""" start="00:04:45.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""is significantly more efficient than capitalism.""" start="00:04:47.480" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And it achieves that by virtue of eliminating the waste""" start="00:04:51.160" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that is inherent in adversarial competition,""" start="00:04:55.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""while still preserving market forces!""" start="00:04:58.480" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""In addition to this property""" start="00:05:01.760" video="mainVideo-maint" id="subtitle"]] +[[!template text="""there is also this other property""" start="00:05:05.160" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that I think is truly profound,""" start="00:05:07.160" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and I want to motivate it by this example of a gyroscope.""" start="00:05:10.600" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Now many of us have had the opportunity to play with""" start="00:05:15.880" video="mainVideo-maint" id="subtitle"]] +[[!template text="""a gyroscope at some point in our lives.""" start="00:05:19.400" video="mainVideo-maint" id="subtitle"]] +[[!template text="""If you haven't, I encourage you to go out and get one""" start="00:05:21.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and try it out. It also makes a good gift""" start="00:05:23.480" video="mainVideo-maint" id="subtitle"]] +[[!template text="""if you're thinking about giving it""" start="00:05:25.800" video="mainVideo-maint" id="subtitle"]] +[[!template text="""to somebody else this year.""" start="00:05:27.000" video="mainVideo-maint" id="subtitle"]] +[[!template text="""But if you've played with a gyroscope""" start="00:05:28.480" video="mainVideo-maint" id="subtitle"]] +[[!template text="""then you've had the experience, perhaps,""" start="00:05:32.560" video="mainVideo-maint" id="subtitle"]] +[[!template text="""of putting it on your hand and moving it around.""" start="00:05:35.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And no matter what you do, it will always maintain its axis.""" start="00:05:37.920" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Even if you try to push it""" start="00:05:42.800" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and try to make it deviate from that axis,""" start="00:05:45.520" video="mainVideo-maint" id="subtitle"]] +[[!template text="""it will fight you. It will resist you,""" start="00:05:48.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and keep to that axis no matter what.""" start="00:05:50.400" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And if you've had this experience,""" start="00:05:53.040" video="mainVideo-maint" id="subtitle"]] +[[!template text="""then believe it or not,""" start="00:05:56.640" video="mainVideo-maint" id="subtitle"]] +[[!template text="""you have some insight into the nature of economic systems.""" start="00:05:58.040" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Because if we try to get an economic system to do something""" start="00:06:02.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""other than what it wants to do,""" start="00:06:07.040" video="mainVideo-maint" id="subtitle"]] +[[!template text="""other than what is its nature,""" start="00:06:09.280" video="mainVideo-maint" id="subtitle"]] +[[!template text="""then it will resist us and it will fight that change.""" start="00:06:11.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Now, I don't know about you,""" start="00:06:14.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""but I'd prefer to avoid fighting these gyroscopic forces.""" start="00:06:17.760" video="mainVideo-maint" id="subtitle"]] +[[!template text="""I'd rather have these forces work with me""" start="00:06:22.720" video="mainVideo-maint" id="subtitle"]] +[[!template text="""rather than against me. Now in a capitalist system,""" start="00:06:25.040" video="mainVideo-maint" id="subtitle"]] +[[!template text="""there is another problem, which is that""" start="00:06:29.480" video="mainVideo-maint" id="subtitle"]] +[[!template text="""not only do you have these gyroscopic forces at work,""" start="00:06:32.600" video="mainVideo-maint" id="subtitle"]] +[[!template text="""but these forces aren't even all working together.""" start="00:06:35.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""They're working against each other, in many cases.""" start="00:06:39.160" video="mainVideo-maint" id="subtitle"]] +[[!template text="""They represent misaligned interests.""" start="00:06:42.120" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And indeed, these misaligned interests""" start="00:06:46.440" video="mainVideo-maint" id="subtitle"]] +[[!template text="""are the very means by which these forces operate at all.""" start="00:06:50.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""So in a way, war is not just""" start="00:06:53.640" video="mainVideo-maint" id="subtitle"]] +[[!template text="""an inevitable consequence in this system""" start="00:06:57.560" video="mainVideo-maint" id="subtitle"]] +[[!template text="""but is rather the very nature of such a system.""" start="00:06:59.680" video="mainVideo-maint" id="subtitle"]] +[[!template text="""In an attribution-based system, on the other hand,""" start="00:07:05.280" video="mainVideo-maint" id="subtitle"]] +[[!template text="""by virtue of the source of value""" start="00:07:08.360" video="mainVideo-maint" id="subtitle"]] +[[!template text="""being collective attribution,""" start="00:07:11.400" video="mainVideo-maint" id="subtitle"]] +[[!template text="""we are able to achieve alignment""" start="00:07:13.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""of all of these interests at every scale,""" start="00:07:17.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""so that at every scale of society,""" start="00:07:19.680" video="mainVideo-maint" id="subtitle"]] +[[!template text="""from the smallest to the largest scales,""" start="00:07:22.720" video="mainVideo-maint" id="subtitle"]] +[[!template text="""the interests will be aligned,""" start="00:07:24.760" video="mainVideo-maint" id="subtitle"]] +[[!template text="""will be consonant and harmonious.""" start="00:07:26.480" video="mainVideo-maint" id="subtitle"]] +[[!template text="""I think this is a very important, profound quality""" start="00:07:28.560" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that I think is the fundamental problem of economics -""" start="00:07:33.800" video="mainVideo-maint" id="subtitle"]] +[[!template text="""the fundamental goal of economics to solve.""" start="00:07:38.120" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And I believe that an attribution-based economic system""" start="00:07:40.480" video="mainVideo-maint" id="subtitle"]] +[[!template text="""addresses it and solves it.""" start="00:07:43.840" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""So without further ado, I want to bring it home""" start="00:07:45.200" video="mainVideo-maint" id="subtitle"]] +[[!template text="""to the prototype that we have in mind""" start="00:07:50.280" video="mainVideo-maint" id="subtitle"]] +[[!template text="""for the Emacs community.""" start="00:07:52.480" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Now we want to start in the Emacs community""" start="00:07:53.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""because Emacs has a long tradition""" start="00:07:56.280" video="mainVideo-maint" id="subtitle"]] +[[!template text="""of exploring better ways of doing things""" start="00:07:58.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and pursuing better alternatives to the status quo.""" start="00:08:02.160" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Now, to give you an overview of the prototype""" start="00:08:05.280" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that we've implemented for open source projects.""" start="00:08:09.400" video="mainVideo-maint" id="subtitle"]] +[[!template text="""The prototype is composed of two broad phases,""" start="00:08:12.640" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that is, the appraisal phase and the accounting phase.""" start="00:08:15.440" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Any project is composed of ideas, capital and labor.""" start="00:08:18.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""The appraisal phase is involved in assessing the work done""" start="00:08:21.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""in terms of how much value was created""" start="00:08:26.280" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and who created the value and how important that value is.""" start="00:08:29.120" video="mainVideo-maint" id="subtitle"]] +[[!template text="""The output of this stage is an attributions file.""" start="00:08:31.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And the second phase, of accounting, is about, you know,""" start="00:08:35.200" video="mainVideo-maint" id="subtitle"]] +[[!template text="""how do you handle payments that come in""" start="00:08:42.040" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and how do you pay people out.""" start="00:08:43.680" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Now the first part has more of a social component to it""" start="00:08:45.120" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and the second part has more of""" start="00:08:48.880" video="mainVideo-maint" id="subtitle"]] +[[!template text="""a technological component to it that can be automated.""" start="00:08:50.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""So in order to implement this prototype,""" start="00:08:53.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""we have two things.""" start="00:08:56.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""We have founding documents that describe the social aspects,""" start="00:08:57.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and an accounting system that automates""" start="00:09:01.680" video="mainVideo-maint" id="subtitle"]] +[[!template text="""some of the technological aspects.""" start="00:09:04.040" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""The founding documents, in the noble tradition""" start="00:09:05.920" video="mainVideo-maint" id="subtitle"]] +[[!template text="""of the Gayaneshagowa and the US constitution,""" start="00:09:10.800" video="mainVideo-maint" id="subtitle"]] +[[!template text="""include a constitution which describes""" start="00:09:14.560" video="mainVideo-maint" id="subtitle"]] +[[!template text="""the guiding principles of ABE,""" start="00:09:17.800" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and the two main prongs are forward-looking empowerment""" start="00:09:20.680" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and backward-looking fairness.""" start="00:09:25.400" video="mainVideo-maint" id="subtitle"]] +[[!template text="""This means that we want to empower""" start="00:09:26.640" video="mainVideo-maint" id="subtitle"]] +[[!template text="""those individuals and groups""" start="00:09:28.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that are most likely to create value in the future,""" start="00:09:31.600" video="mainVideo-maint" id="subtitle"]] +[[!template text="""while also recognizing and fairly compensating""" start="00:09:33.600" video="mainVideo-maint" id="subtitle"]] +[[!template text="""those who've created value in the past,""" start="00:09:36.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""to set a good example and incentivize others""" start="00:09:38.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""to take chances in creating value.""" start="00:09:41.920" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And it describes high level principles of""" start="00:09:45.560" video="mainVideo-maint" id="subtitle"]] +[[!template text="""dialectical inheritance attribution""" start="00:09:50.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""as proceeding by means of""" start="00:09:52.120" video="mainVideo-maint" id="subtitle"]] +[[!template text="""common, collectively agreed-upon standards""" start="00:09:53.880" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that are applied to all.""" start="00:09:56.000" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And the key thing here is these improvements feed back""" start="00:09:56.920" video="mainVideo-maint" id="subtitle"]] +[[!template text="""to the whole and apply to everyone.""" start="00:09:59.760" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And this is an important quality""" start="00:10:01.920" video="mainVideo-maint" id="subtitle"]] +[[!template text="""to ensuring fairness and accuracy.""" start="00:10:03.640" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""There's also a declaration of non-ownership.""" start="00:10:05.920" video="mainVideo-maint" id="subtitle"]] +[[!template text="""We saw already that ownership is an overused institution.""" start="00:10:09.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""This just codifies that and allows us to shed""" start="00:10:13.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""the baggage of this idea of ownership""" start="00:10:20.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""where it doesn't make any sense.""" start="00:10:22.440" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""A third document is the financial model""" start="00:10:24.320" video="mainVideo-maint" id="subtitle"]] +[[!template text="""which describes how payments are to be treated,""" start="00:10:28.160" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and a key idea here is that when you pay money""" start="00:10:31.320" video="mainVideo-maint" id="subtitle"]] +[[!template text="""to an open source project, you know,""" start="00:10:34.160" video="mainVideo-maint" id="subtitle"]] +[[!template text="""today you don't really have an incentive to do so,""" start="00:10:37.360" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and it essentially is kind of like a donation.""" start="00:10:40.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""But in this model, in an attribution-based model,""" start="00:10:42.440" video="mainVideo-maint" id="subtitle"]] +[[!template text="""when you pay money to a project,""" start="00:10:46.000" video="mainVideo-maint" id="subtitle"]] +[[!template text="""you're creating value in a way.""" start="00:10:48.120" video="mainVideo-maint" id="subtitle"]] +[[!template text="""You're contributing value to the project""" start="00:10:50.000" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and that itself is attributable.""" start="00:10:51.600" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And the manner in which we'll treat this""" start="00:10:53.280" video="mainVideo-maint" id="subtitle"]] +[[!template text="""is in terms of the fair market price that, again,""" start="00:10:56.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""we agree upon collectively.""" start="00:10:58.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And any payment that exceeds the fair market price""" start="00:11:00.200" video="mainVideo-maint" id="subtitle"]] +[[!template text="""is going to be treated as investment.""" start="00:11:04.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And the goal here for this financial model""" start="00:11:06.400" video="mainVideo-maint" id="subtitle"]] +[[!template text="""is for the system to be self-sustaining,""" start="00:11:10.200" video="mainVideo-maint" id="subtitle"]] +[[!template text="""so I think there are many open problems here""" start="00:11:11.880" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and any finance experts or any other experts""" start="00:11:15.440" video="mainVideo-maint" id="subtitle"]] +[[!template text="""who are interested in contributing here,""" start="00:11:18.440" video="mainVideo-maint" id="subtitle"]] +[[!template text="""your help is needed, certainly.""" start="00:11:21.480" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""There's also an attribution model document,""" start="00:11:23.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""which describes some of the theoretical ideas""" start="00:11:26.760" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that would guide dialectical inheritance attribution,""" start="00:11:29.000" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and there are many interesting ideas here.""" start="00:11:33.480" video="mainVideo-maint" id="subtitle"]] +[[!template text="""One that I'd like to mention is "backpropagation,"""" start="00:11:36.920" video="mainVideo-maint" id="subtitle"]] +[[!template text="""which is the idea that""" start="00:11:40.360" video="mainVideo-maint" id="subtitle"]] +[[!template text="""as we're improving the standards over time""" start="00:11:42.560" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and they're likely to get more accurate and fair over time,""" start="00:11:45.200" video="mainVideo-maint" id="subtitle"]] +[[!template text="""we'd like these more accurate and fair standards""" start="00:11:48.280" video="mainVideo-maint" id="subtitle"]] +[[!template text="""to "backpropagate" and calibrate the value assignments""" start="00:11:51.560" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that were done in the past.""" start="00:11:56.520" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And this means that some people might have been""" start="00:11:57.800" video="mainVideo-maint" id="subtitle"]] +[[!template text="""underpaid in the past""" start="00:12:01.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and we would pay them what they were underpaid,""" start="00:12:02.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""or the balance,""" start="00:12:05.200" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and some people may have been overpaid.""" start="00:12:06.480" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Now in that case we're not going to go and say,""" start="00:12:08.840" video="mainVideo-maint" id="subtitle"]] +[[!template text=""""hey we overpaid you, give us the money back."""" start="00:12:11.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Instead the system as a whole is going to bear""" start="00:12:14.440" video="mainVideo-maint" id="subtitle"]] +[[!template text="""the cost of being wrong,""" start="00:12:18.200" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and so it's kind of an insurance policy.""" start="00:12:19.520" video="mainVideo-maint" id="subtitle"]] +[[!template text="""But I think another more interesting quality here is that""" start="00:12:22.160" video="mainVideo-maint" id="subtitle"]] +[[!template text="""the system in practice wouldn't really""" start="00:12:25.600" video="mainVideo-maint" id="subtitle"]] +[[!template text="""absorb any negative impact here""" start="00:12:29.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""because there is an incentive""" start="00:12:33.000" video="mainVideo-maint" id="subtitle"]] +[[!template text="""for these people who've been overpaid""" start="00:12:34.320" video="mainVideo-maint" id="subtitle"]] +[[!template text="""to reinvest that money.""" start="00:12:37.600" video="mainVideo-maint" id="subtitle"]] +[[!template text="""So I think they would want to invest the money""" start="00:12:38.800" video="mainVideo-maint" id="subtitle"]] +[[!template text="""in other places that the system has valued""" start="00:12:42.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""as being valuable and showing potential.""" start="00:12:45.520" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""The second component of the implementation""" start="00:12:49.120" video="mainVideo-maint" id="subtitle"]] +[[!template text="""is the accounting system. All accounting is public.""" start="00:12:54.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""All payments into the repo are public""" start="00:12:58.600" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and all payments out of the project are also public.""" start="00:13:00.880" video="mainVideo-maint" id="subtitle"]] +[[!template text="""We can do some things for privacy,""" start="00:13:03.400" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and again, the basis of this system is dialogue.""" start="00:13:05.480" video="mainVideo-maint" id="subtitle"]] +[[!template text="""It's not a fundamentally technologically system.""" start="00:13:08.520" video="mainVideo-maint" id="subtitle"]] +[[!template text="""It's a fundamentally dialogue-based system,""" start="00:13:10.760" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and that, to be honest with you, is everything.""" start="00:13:12.800" video="mainVideo-maint" id="subtitle"]] +[[!template text="""It's all systems that we have in place.""" start="00:13:14.760" video="mainVideo-maint" id="subtitle"]] +[[!template text="""But by embracing that, it means that""" start="00:13:17.000" video="mainVideo-maint" id="subtitle"]] +[[!template text="""we can do whatever we want to do by discussion,""" start="00:13:21.120" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and if there's something""" start="00:13:25.040" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that we cannot achieve in a technological way,""" start="00:13:26.040" video="mainVideo-maint" id="subtitle"]] +[[!template text="""we'll achieve it in a non-technological way.""" start="00:13:27.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""But anyway, the point is, all accounting is public,""" start="00:13:30.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and text files in the repository""" start="00:13:36.000" video="mainVideo-maint" id="subtitle"]] +[[!template text="""form the inputs and outputs of the accounting system""" start="00:13:40.400" video="mainVideo-maint" id="subtitle"]] +[[!template text="""which is implemented as a GitHub action.""" start="00:13:43.920" video="mainVideo-maint" id="subtitle"]] +[[!template text="""So typically a source repository will have""" start="00:13:48.880" video="mainVideo-maint" id="subtitle"]] +[[!template text="""an ABE folder containing these three inputs:""" start="00:13:51.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""attributions, payments,""" start="00:13:54.120" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and payouts. And we'll see how that works.""" start="00:13:55.600" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""This is the drym.org Github organization account.""" start="00:13:59.920" video="mainVideo-maint" id="subtitle"]] +[[!template text="""This is an example of a repository that uses""" start="00:14:04.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""the GitHub action accounting system.""" start="00:14:09.600" video="mainVideo-maint" id="subtitle"]] +[[!template text="""So there will be a payments folder, a payouts folder,""" start="00:14:12.440" video="mainVideo-maint" id="subtitle"]] +[[!template text="""as well as an attributions file.""" start="00:14:16.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""The payments: essentially each file""" start="00:14:18.640" video="mainVideo-maint" id="subtitle"]] +[[!template text="""just represents a payment that's made to the repository.""" start="00:14:23.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Payouts is the same except it's payments""" start="00:14:26.760" video="mainVideo-maint" id="subtitle"]] +[[!template text="""made by the admins of the repository to contributors.""" start="00:14:29.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And the attributions file breaks down""" start="00:14:32.360" video="mainVideo-maint" id="subtitle"]] +[[!template text="""the attribution of the value in the repository""" start="00:14:37.160" video="mainVideo-maint" id="subtitle"]] +[[!template text="""by contributor. And then the billing system runs""" start="00:14:40.680" video="mainVideo-maint" id="subtitle"]] +[[!template text="""on every relevant commit,""" start="00:14:47.560" video="mainVideo-maint" id="subtitle"]] +[[!template text="""which is typically changes to the ABE folder,""" start="00:14:50.360" video="mainVideo-maint" id="subtitle"]] +[[!template text="""generates a set of transactions""" start="00:14:53.680" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that are owed to various people from various payments,""" start="00:14:57.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and then creates an issue with the outstanding balances""" start="00:15:00.520" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that need to be paid out to contributors,""" start="00:15:05.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and tells you what those balances are.""" start="00:15:07.280" video="mainVideo-maint" id="subtitle"]] +[[!template text="""So for repository or project maintainers,""" start="00:15:09.520" video="mainVideo-maint" id="subtitle"]] +[[!template text="""it automates all these accounting details""" start="00:15:11.800" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and you just have to worry about fulfilling the payments.""" start="00:15:14.880" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""An interesting property of the prototype""" start="00:15:17.600" video="mainVideo-maint" id="subtitle"]] +[[!template text="""is that boundary incentives expand the boundary,""" start="00:15:23.520" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and that is that the incentives in the system""" start="00:15:28.400" video="mainVideo-maint" id="subtitle"]] +[[!template text="""are so constructed that those on the periphery""" start="00:15:33.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""of the attribution-based economic system""" start="00:15:38.440" video="mainVideo-maint" id="subtitle"]] +[[!template text="""have an incentive to join in.""" start="00:15:40.440" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And we'll see how that works.""" start="00:15:42.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Well, as I mentioned, we're starting this prototype""" start="00:15:45.520" video="mainVideo-maint" id="subtitle"]] +[[!template text="""in the Emacs community with the""" start="00:15:51.360" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Symex repo. Symex is a structural editing package,""" start="00:15:52.920" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and this prototype will recognize direct contributors""" start="00:15:59.600" video="mainVideo-maint" id="subtitle"]] +[[!template text="""as well as antecedents and related projects""" start="00:16:05.320" video="mainVideo-maint" id="subtitle"]] +[[!template text="""through the process of collective attribution.""" start="00:16:08.160" video="mainVideo-maint" id="subtitle"]] +[[!template text="""We all decide how financial contributions to the Symex repo""" start="00:16:09.800" video="mainVideo-maint" id="subtitle"]] +[[!template text="""are going to be distributed to the direct contributors""" start="00:16:14.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""as well as to antecedents and related projects.""" start="00:16:18.760" video="mainVideo-maint" id="subtitle"]] +[[!template text="""So the power is yours!""" start="00:16:21.040" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And that's what I meant when I said""" start="00:16:23.680" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that the boundary incentives expand the boundary,""" start="00:16:27.160" video="mainVideo-maint" id="subtitle"]] +[[!template text="""because projects that we agree are owed money""" start="00:16:29.520" video="mainVideo-maint" id="subtitle"]] +[[!template text="""from the Symex repo now would have an incentive to join,""" start="00:16:32.360" video="mainVideo-maint" id="subtitle"]] +[[!template text="""because once they join they would get that money.""" start="00:16:37.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And we'll also be implementing this in the""" start="00:16:39.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Racket community. Racket is a Scheme dialect,""" start="00:16:43.200" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and Emacs has great support for Racket in Racket Mode""" start="00:16:47.200" video="mainVideo-maint" id="subtitle"]] +[[!template text="""so I encourage you to try it.""" start="00:16:50.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And we'll be prototyping it in the Qi repository.""" start="00:16:52.160" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Qi is a language written in Racket which is, you know,""" start="00:16:56.000" video="mainVideo-maint" id="subtitle"]] +[[!template text="""it's for functional programming and things like that.""" start="00:16:59.600" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And once again, we'll recognize direct contributors""" start="00:17:02.720" video="mainVideo-maint" id="subtitle"]] +[[!template text="""as well as antecedents and we all decide""" start="00:17:06.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and agree on how those are done.""" start="00:17:09.240" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""So how do you adopt this?""" start="00:17:11.560" video="mainVideo-maint" id="subtitle"]] +[[!template text="""You can add the github action to a repo""" start="00:17:14.120" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that you are a maintainer of.""" start="00:17:18.560" video="mainVideo-maint" id="subtitle"]] +[[!template text="""You can financially support an ABE project.""" start="00:17:20.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""This is important to do""" start="00:17:23.320" video="mainVideo-maint" id="subtitle"]] +[[!template text="""because the system won't get started""" start="00:17:25.200" video="mainVideo-maint" id="subtitle"]] +[[!template text="""without money as an input.""" start="00:17:26.920" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And it also has network effects, as we saw -""" start="00:17:28.120" video="mainVideo-maint" id="subtitle"]] +[[!template text="""the more money you contribute,""" start="00:17:31.120" video="mainVideo-maint" id="subtitle"]] +[[!template text="""the more incentive there is""" start="00:17:33.480" video="mainVideo-maint" id="subtitle"]] +[[!template text="""for other people to join the system.""" start="00:17:35.240" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And contributions are also attributable,""" start="00:17:36.800" video="mainVideo-maint" id="subtitle"]] +[[!template text="""as we said earlier.""" start="00:17:39.880" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Some of them can be treated as investments.""" start="00:17:41.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Any help you can provide with funding""" start="00:17:43.720" video="mainVideo-maint" id="subtitle"]] +[[!template text="""would be attributable and very helpful, of course.""" start="00:17:48.000" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And yeah, if you can help us achieve""" start="00:17:50.520" video="mainVideo-maint" id="subtitle"]] +[[!template text="""the goal of self-sufficiency""" start="00:17:54.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""without relying on capitalist entry points,""" start="00:17:55.840" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that would be very helpful as well.""" start="00:17:59.040" video="mainVideo-maint" id="subtitle"]] +[[!template text="""I'd like to acknowledge the help of many individuals""" start="00:18:01.760" video="mainVideo-maint" id="subtitle"]] +[[!template text="""for this presentation""" start="00:18:06.320" video="mainVideo-maint" id="subtitle"]] +[[!template text="""as well as many of the supporting things""" start="00:18:09.400" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that have gone on behind the scenes for years.""" start="00:18:12.760" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And in particular for now I want to mention""" start="00:18:14.920" video="mainVideo-maint" id="subtitle"]] +[[!template text="""Jair and Ariana who wrote the accounting system""" start="00:18:19.680" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that we saw earlier, and Salim who encouraged me""" start="00:18:25.560" video="mainVideo-maint" id="subtitle"]] +[[!template text="""to take this social approach to the prototype.""" start="00:18:28.320" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And so many more people who have believed and invested""" start="00:18:32.800" video="mainVideo-maint" id="subtitle"]] +[[!template text="""in the cause of "attribution, not ownership!"""" start="00:18:36.560" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""I want to leave you with this closing thought.""" start="00:18:39.160" video="mainVideo-maint" id="subtitle"]] +[[!template text="""The electromagnetic attraction between two objects""" start="00:18:42.760" video="mainVideo-maint" id="subtitle"]] +[[!template text="""is 10^42 stronger (!) than the gravitational attraction""" start="00:18:46.160" video="mainVideo-maint" id="subtitle"]] +[[!template text="""between these same objects.""" start="00:18:49.920" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And yet, a stone falls to the Earth""" start="00:18:51.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""under the influence of gravity, not magnetism.""" start="00:18:53.880" video="mainVideo-maint" id="subtitle"]] +[[!template text="""The reason is that the e/m forces are polarized,""" start="00:18:56.680" video="mainVideo-maint" id="subtitle"]] +[[!template text="""much like our world, and cancel each other out.""" start="00:19:00.880" video="mainVideo-maint" id="subtitle"]] +[[!template new="1" text="""Now in this world, we are told""" start="00:19:04.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""that we should look out for ourselves""" start="00:19:07.720" video="mainVideo-maint" id="subtitle"]] +[[!template text="""because no one is going to look out for us.""" start="00:19:09.560" video="mainVideo-maint" id="subtitle"]] +[[!template text="""That we should take care of our own""" start="00:19:11.880" video="mainVideo-maint" id="subtitle"]] +[[!template text="""because we can't rely on others to care.""" start="00:19:14.040" video="mainVideo-maint" id="subtitle"]] +[[!template text="""An attribution-based economy is nothing like that.""" start="00:19:17.360" video="mainVideo-maint" id="subtitle"]] +[[!template text="""We care about each other,""" start="00:19:22.480" video="mainVideo-maint" id="subtitle"]] +[[!template text="""we take care of each other,""" start="00:19:23.960" video="mainVideo-maint" id="subtitle"]] +[[!template text="""because taking care of one another is valuable,""" start="00:19:25.440" video="mainVideo-maint" id="subtitle"]] +[[!template text="""and an attribution-based economic system""" start="00:19:29.880" video="mainVideo-maint" id="subtitle"]] +[[!template text="""is capable of recognizing that value, in financial terms.""" start="00:19:32.560" video="mainVideo-maint" id="subtitle"]] +[[!template text="""And as a result, we are safe in the embrace of the world.""" start="00:19:39.080" video="mainVideo-maint" id="subtitle"]] +[[!template text="""So, um, yeah. Let's go!""" start="00:19:43.880" video="mainVideo-maint" id="subtitle"]] + +Captioner: sid Questions or comments? Please e-mail [sid@drym.org](mailto:sid@drym.org?subject=Comment%20for%20EmacsConf%202022%20maint%3A%20Maintaining%20the%20Maintainers%3A%20Attribution%20as%20an%20Economic%20Model%20for%20Open%20Source) diff --git a/2022/info/maint-before.md b/2022/info/maint-before.md index 1977e79d..87f523fa 100644 --- a/2022/info/maint-before.md +++ b/2022/info/maint-before.md @@ -1,15 +1,15 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="maint"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect stroke-width="3" x="549" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(578,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect stroke-width="3" x="549" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] -Format: 20-min talk followed by after Q&A (<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-org,emacsconf-accessible,emacsconf-gen,emacsconf-dev">#emacsconf-dev</a>) +Format: 20-min talk followed by live Q&A (done) Etherpad: <https://pad.emacsconf.org/2022-maint> Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Q&A starting (not yet open for joining) -<div>Times in different timezones:</div><div class="times" start="2022-12-03T19:50:00Z" end="2022-12-03T20:10:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~2:50 PM - 3:10 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~1:50 PM - 2:10 PM CST (US/Central)<br />Saturday, Dec 3 2022, ~12:50 PM - 1:10 PM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~11:50 AM - 12:10 PM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~7:50 PM - 8:10 PM UTC <br />Saturday, Dec 3 2022, ~8:50 PM - 9:10 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~9:50 PM - 10:10 PM EET (Europe/Athens)<br />Sunday, Dec 4 2022, ~1:20 AM - 1:40 AM IST (Asia/Kolkata)<br />Sunday, Dec 4 2022, ~3:50 AM - 4:10 AM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~4:50 AM - 5:10 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/dev/">Find out how to watch and participate</a></div> +Status: Q&A finished, IRC and pad will be archived on this page + [[!template id="vid" vidid="maint-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-maint--maintaining-the-maintainers-attribution-as-an-economic-model-for-open-source--sid-kasivajhula--original.mp4" poster="https://media.emacsconf.org/2022/emacsconf-2022-maint--maintaining-the-maintainers-attribution-as-an-economic-model-for-open-source--sid-kasivajhula--original.png" captions="""<track label="English" kind="captions" srclang="en" src="/2022/captions/emacsconf-2022-maint--maintaining-the-maintainers-attribution-as-an-economic-model-for-open-source--sid-kasivajhula--main.vtt" default />""" size="416M" duration="19:56" other_resources="""[Download --main.webm (64MB)](https://media.emacsconf.org/2022/emacsconf-2022-maint--maintaining-the-maintainers-attribution-as-an-economic-model-for-open-source--sid-kasivajhula--main.webm) diff --git a/2022/info/maint-nav.md b/2022/info/maint-nav.md index 0a7f8dcd..af9f5c66 100644 --- a/2022/info/maint-nav.md +++ b/2022/info/maint-nav.md @@ -3,5 +3,5 @@ Back to the [[talks]] Previous by time: <a href="/2022/talks/realestate">Real estate and Org table formulas</a> Next by time: <a href="/2022/talks/health">Health data journaling and visualization with Org Mode and gnuplot</a> -Track: <span class="sched-track General">General</span> +Track: <span class="sched-track Development">Development</span> </div> diff --git a/2022/info/meetups-after.md b/2022/info/meetups-after.md index 28e1cea4..1cda3511 100644 --- a/2022/info/meetups-after.md +++ b/2022/info/meetups-after.md @@ -889,6 +889,9 @@ [[!template text="""y a ustedes por unirse.""" start="00:19:26.560" video="mainVideo-meetups" id="subtitle"]] [[!template text="""Ahora es el momento para las preguntas.""" start="00:19:30.040" video="mainVideo-meetups" id="subtitle"]] + + +Captioners: bhavin192, translated to Spanish by quiliro Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202022%20meetups%3A%20Attending%20and%20organizing%20Emacs%20meetups) diff --git a/2022/info/meetups-before.md b/2022/info/meetups-before.md index ace9cc16..ec594278 100644 --- a/2022/info/meetups-before.md +++ b/2022/info/meetups-before.md @@ -3,15 +3,15 @@ In this talk, Bhavin Gandhi shares how to participate in Emacs meetups and even The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="meetups"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect stroke-width="3" x="376" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 3:50- 3:55 Short hyperlinks to Python docs</title> <rect x="643" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(648,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect stroke-width="3" x="376" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] -Format: 20-min talk followed by live Q&A (<https://emacsconf.org/current/meetups/room>) +Format: 20-min talk followed by live Q&A (done) Etherpad: <https://pad.emacsconf.org/2022-meetups> Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A open for participation -<div>Times in different timezones:</div><div class="times" start="2022-12-03T18:00:00Z" end="2022-12-03T18:20:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~1:00 PM - 1:20 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~12:00 PM - 12:20 PM CST (US/Central)<br />Saturday, Dec 3 2022, ~11:00 AM - 11:20 AM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~10:00 AM - 10:20 AM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~6:00 PM - 6:20 PM UTC <br />Saturday, Dec 3 2022, ~7:00 PM - 7:20 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~8:00 PM - 8:20 PM EET (Europe/Athens)<br />Saturday, Dec 3 2022, ~11:30 PM - 11:50 PM IST (Asia/Kolkata)<br />Sunday, Dec 4 2022, ~2:00 AM - 2:20 AM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~3:00 AM - 3:20 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/gen/">Find out how to watch and participate</a></div> +Status: Q&A finished, IRC and pad will be archived on this page + [[!template id="vid" vidid="meetups-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-meetups--attending-and-organizing-emacs-meetups--bhavin-gandhi--main.webm" poster="https://media.emacsconf.org/2022/emacsconf-2022-meetups--attending-and-organizing-emacs-meetups--bhavin-gandhi--main.png" captions="""<track label="English" kind="captions" srclang="en" src="/2022/captions/emacsconf-2022-meetups--attending-and-organizing-emacs-meetups--bhavin-gandhi--main.vtt" default /><track label="Spanish" kind="captions" srclang="es" src="/2022/captions/emacsconf-2022-meetups--attending-and-organizing-emacs-meetups--bhavin-gandhi--main_es.vtt" />""" size="104M" duration="19:35" other_resources="""[Download --main.webm (104MB)](https://media.emacsconf.org/2022/emacsconf-2022-meetups--attending-and-organizing-emacs-meetups--bhavin-gandhi--main.webm) diff --git a/2022/info/orgsuperlinks-before.md b/2022/info/orgsuperlinks-before.md index 91b04c0a..2a520f49 100644 --- a/2022/info/orgsuperlinks-before.md +++ b/2022/info/orgsuperlinks-before.md @@ -3,7 +3,7 @@ In this talk, Karl Voit shares how he uses org-edna and org-super-links to manag The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="orgsuperlinks"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect stroke-width="3" x="156" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect stroke-width="3" x="156" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/orgvm-before.md b/2022/info/orgvm-before.md index b328d3be..82017336 100644 --- a/2022/info/orgvm-before.md +++ b/2022/info/orgvm-before.md @@ -1,7 +1,7 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="orgvm"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect stroke-width="3" x="203" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect stroke-width="3" x="203" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/orgyear-before.md b/2022/info/orgyear-before.md index 6cec0eed..3662ea0c 100644 --- a/2022/info/orgyear-before.md +++ b/2022/info/orgyear-before.md @@ -1,7 +1,7 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="orgyear"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect stroke-width="3" x="54" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect stroke-width="3" x="54" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/python-before.md b/2022/info/python-before.md index d08cc13a..433857af 100644 --- a/2022/info/python-before.md +++ b/2022/info/python-before.md @@ -1,7 +1,7 @@ <!-- Automatically generated by emacsconf-publish-before-page --> -The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="python"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 3:50- 3:55 Short hyperlinks to Python docs</title> <rect stroke-width="3" x="643" y="75" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(648,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="python"> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect stroke-width="3" x="705" y="75" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] @@ -9,7 +9,7 @@ Format: 5-min talk followed by IRC Q&A (<a href="https://chat.emacsconf.org/?joi Etherpad: <https://pad.emacsconf.org/2022-python> Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) Status: Waiting for video from speaker -<div>Times in different timezones:</div><div class="times" start="2022-12-03T20:50:00Z" end="2022-12-03T20:55:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~3:50 PM - 3:55 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~2:50 PM - 2:55 PM CST (US/Central)<br />Saturday, Dec 3 2022, ~1:50 PM - 1:55 PM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~12:50 PM - 12:55 PM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~8:50 PM - 8:55 PM UTC <br />Saturday, Dec 3 2022, ~9:50 PM - 9:55 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~10:50 PM - 10:55 PM EET (Europe/Athens)<br />Sunday, Dec 4 2022, ~2:20 AM - 2:25 AM IST (Asia/Kolkata)<br />Sunday, Dec 4 2022, ~4:50 AM - 4:55 AM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~5:50 AM - 5:55 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/dev/">Find out how to watch and participate</a></div> +<div>Times in different timezones:</div><div class="times" start="2022-12-04T21:30:00Z" end="2022-12-04T21:35:00Z"><div class="conf-time">Sunday, Dec 4 2022, ~4:30 PM - 4:35 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Sunday, Dec 4 2022, ~3:30 PM - 3:35 PM CST (US/Central)<br />Sunday, Dec 4 2022, ~2:30 PM - 2:35 PM MST (US/Mountain)<br />Sunday, Dec 4 2022, ~1:30 PM - 1:35 PM PST (US/Pacific)<br />Sunday, Dec 4 2022, ~9:30 PM - 9:35 PM UTC <br />Sunday, Dec 4 2022, ~10:30 PM - 10:35 PM CET (Europe/Paris)<br />Sunday, Dec 4 2022, ~11:30 PM - 11:35 PM EET (Europe/Athens)<br />Monday, Dec 5 2022, ~3:00 AM - 3:05 AM IST (Asia/Kolkata)<br />Monday, Dec 5 2022, ~5:30 AM - 5:35 AM +08 (Asia/Singapore)<br />Monday, Dec 5 2022, ~6:30 AM - 6:35 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/dev/">Find out how to watch and participate</a></div> # Description diff --git a/2022/info/rde-before.md b/2022/info/rde-before.md index 189bad6a..51f733a6 100644 --- a/2022/info/rde-before.md +++ b/2022/info/rde-before.md @@ -3,7 +3,7 @@ In this talk, Andrew Tropin will demonstrate how to use rde Emacs for reproducib The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="rde"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect stroke-width="3" x="94" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect stroke-width="3" x="94" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/realestate-after.md b/2022/info/realestate-after.md index 911020e8..e57a5d32 100644 --- a/2022/info/realestate-after.md +++ b/2022/info/realestate-after.md @@ -4,587 +4,589 @@ <a name="realestate-mainVideo-transcript"></a> # Transcript -[[!template new="1" text="Hey, I'm Gopar and this is the" start="00:00:00.000" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Real Estate and Org Mode Table Formulas talk." start="00:00:05.454" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Not very creative, but it is what it is." start="00:00:07.640" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Now I just want to say that everything I talk about here" start="00:00:09.880" video="mainVideo-realestate" id="subtitle"]] -[[!template text="is in the Org Mode in the Emacs manual." start="00:00:13.052" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I posted a link to the web version," start="00:00:15.903" video="mainVideo-realestate" id="subtitle"]] -[[!template text="but it should be inside of Emacs as well." start="00:00:17.910" video="mainVideo-realestate" id="subtitle"]] -[[!template new="1" text="Now before I start, I want to showcase the end goal." start="00:00:20.480" video="mainVideo-realestate" id="subtitle"]] -[[!template text="That way you know if you guys want to" start="00:00:25.097" video="mainVideo-realestate" id="subtitle"]] -[[!template text="actually see the talk or not." start="00:00:26.807" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So I always think that's pretty cool to see" start="00:00:28.740" video="mainVideo-realestate" id="subtitle"]] -[[!template text="what you're actually going to build" start="00:00:30.492" video="mainVideo-realestate" id="subtitle"]] -[[!template text="before you start building it." start="00:00:31.518" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Alright. So let me start off with the goal," start="00:00:32.680" video="mainVideo-realestate" id="subtitle"]] -[[!template text="the end goal. Here we have a simple table formula" start="00:00:34.286" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and we have some constants, some values inside the list--" start="00:00:38.763" video="mainVideo-realestate" id="subtitle"]] -[[!template text="inside the table, I'm sorry," start="00:00:42.614" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and some other stuff that we will get to," start="00:00:44.640" video="mainVideo-realestate" id="subtitle"]] -[[!template text="but for now... I don't want to spoil too much." start="00:00:47.673" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I just want to give you a demo" start="00:00:49.280" video="mainVideo-realestate" id="subtitle"]] -[[!template text="of how it actually works." start="00:00:50.328" video="mainVideo-realestate" id="subtitle"]] -[[!template new="1" text="We have a few values. Let me first go over the constants." start="00:00:51.800" video="mainVideo-realestate" id="subtitle"]] -[[!template text="We have PMI, which stands for" start="00:00:56.095" video="mainVideo-realestate" id="subtitle"]] -[[!template text="private mortgage insurance," start="00:00:57.582" video="mainVideo-realestate" id="subtitle"]] -[[!template text="so it's insurance that you'll have to pay" start="00:00:57.591" video="mainVideo-realestate" id="subtitle"]] -[[!template text="depending on how much money you put into the deal." start="00:01:00.537" video="mainVideo-realestate" id="subtitle"]] -[[!template text="The property tax, which is self-explanatory," start="00:01:03.640" video="mainVideo-realestate" id="subtitle"]] -[[!template text="the tax that you owe for owning the property," start="00:01:06.068" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and then home insurance," start="00:01:09.317" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and the interest rate at the loan that you get." start="00:01:11.107" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So, here we have a few columns." start="00:01:13.440" video="mainVideo-realestate" id="subtitle"]] -[[!template text="The first one is called House," start="00:01:15.667" video="mainVideo-realestate" id="subtitle"]] -[[!template text="which I usually just put a description of the house" start="00:01:17.412" video="mainVideo-realestate" id="subtitle"]] -[[!template text="with the link of the posting," start="00:01:20.624" video="mainVideo-realestate" id="subtitle"]] -[[!template text="the price of the house," start="00:01:21.127" video="mainVideo-realestate" id="subtitle"]] -[[!template text="the percentage down payment (this I play around with" start="00:01:22.494" video="mainVideo-realestate" id="subtitle"]] -[[!template text="to see how much the deal will be structured)," start="00:01:26.190" video="mainVideo-realestate" id="subtitle"]] -[[!template text="the down payment (which is calculated from" start="00:01:27.474" video="mainVideo-realestate" id="subtitle"]] -[[!template text="the previous two columns)," start="00:01:30.529" video="mainVideo-realestate" id="subtitle"]] -[[!template text="the monthly mortgage (which is calculated as well)," start="00:01:31.755" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and then the tenant income (which is what I suppose" start="00:01:34.145" video="mainVideo-realestate" id="subtitle"]] -[[!template text="would be an example of the tenant income" start="00:01:37.996" video="mainVideo-realestate" id="subtitle"]] -[[!template text="that I can potentially make off the property," start="00:01:41.006" video="mainVideo-realestate" id="subtitle"]] -[[!template text="the 1% rule and the ROI." start="00:01:42.753" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I'll quickly go over the last two columns." start="00:01:45.540" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So first is the 1% rule." start="00:01:47.708" video="mainVideo-realestate" id="subtitle"]] -[[!template text="The 1% rule is essentially" start="00:01:49.300" video="mainVideo-realestate" id="subtitle"]] -[[!template text="a "rule," in quotes, that says that" start="00:01:50.880" video="mainVideo-realestate" id="subtitle"]] -[[!template text="if a property matches this specific formula," start="00:01:53.589" video="mainVideo-realestate" id="subtitle"]] -[[!template text="it is a good deal to look into." start="00:01:56.278" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So for example, the first two pass," start="00:01:58.320" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and the last one does not pass." start="00:02:00.890" video="mainVideo-realestate" id="subtitle"]] -[[!template text="The last one, at a quick glance," start="00:02:02.677" video="mainVideo-realestate" id="subtitle"]] -[[!template text="we can just ignore it and say," start="00:02:04.105" video="mainVideo-realestate" id="subtitle"]] -[[!template text=""hey, that's not going to fly,"" start="00:02:05.472" video="mainVideo-realestate" id="subtitle"]] -[[!template text="we'll just ignore it." start="00:02:06.477" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I won't go too much into details." start="00:02:08.000" video="mainVideo-realestate" id="subtitle"]] -[[!template text="That's just a brief summary." start="00:02:09.891" video="mainVideo-realestate" id="subtitle"]] -[[!template new="1" text="So now the ROI is the return on investment." start="00:02:11.520" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So it says "how much of a return am I getting" start="00:02:14.149" video="mainVideo-realestate" id="subtitle"]] -[[!template text="on the amount that I invested?"" start="00:02:17.600" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So let's say you put in $12,000," start="00:02:18.960" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and at the end of the year, you cashflow $6,000." start="00:02:21.168" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So if you calculate the ROI off of that," start="00:02:23.456" video="mainVideo-realestate" id="subtitle"]] -[[!template text="you get a 50% return on investment." start="00:02:26.127" video="mainVideo-realestate" id="subtitle"]] -[[!template text="In two years, you'll make your money back," start="00:02:28.477" video="mainVideo-realestate" id="subtitle"]] -[[!template text="which is pretty good." start="00:02:30.086" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Then all the rest of the years," start="00:02:31.734" video="mainVideo-realestate" id="subtitle"]] -[[!template text="you'll just slowly be reaping in all that," start="00:02:32.719" video="mainVideo-realestate" id="subtitle"]] -[[!template text="all the excess cash flow." start="00:02:34.348" video="mainVideo-realestate" id="subtitle"]] -[[!template text="But yeah, that's it in a nutshell." start="00:02:36.640" video="mainVideo-realestate" id="subtitle"]] -[[!template new="1" text="So let me demo it real quick." start="00:02:40.040" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So for example, I'm going to change the down payment," start="00:02:42.270" video="mainVideo-realestate" id="subtitle"]] -[[!template text="but I want you to pay attention" start="00:02:44.259" video="mainVideo-realestate" id="subtitle"]] -[[!template text="to this column [down payment]" start="00:02:45.745" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and the monthly mortgage column." start="00:02:48.214" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So right here [down payment] is $25,000," start="00:02:49.840" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and here [monthly mortgage] is around $1,200," start="00:02:51.727" video="mainVideo-realestate" id="subtitle"]] -[[!template text="a little under $1,300." start="00:02:53.473" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So what happens if I say, you know," start="00:02:55.180" video="mainVideo-realestate" id="subtitle"]] -[[!template text="what I'm going to change the down payment" start="00:02:57.350" video="mainVideo-realestate" id="subtitle"]] -[[!template text="to 5% instead, because I just" start="00:02:58.796" video="mainVideo-realestate" id="subtitle"]] -[[!template text="don't want to put 10." start="00:03:00.949" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So let's just put say 5." start="00:03:02.560" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Then I tab out of here, and voila -" start="00:03:04.126" video="mainVideo-realestate" id="subtitle"]] -[[!template text="you see it updated to half of $25,000." start="00:03:06.275" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So now it's $12,000," start="00:03:08.523" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and this [monthly mortgage] went up" start="00:03:09.947" video="mainVideo-realestate" id="subtitle"]] -[[!template text="over actually $1,300," start="00:03:10.690" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and then this [1% rule] hasn't changed at all" start="00:03:12.234" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and the ROI is there." start="00:03:14.784" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So one thing that I should mention is" start="00:03:17.680" video="mainVideo-realestate" id="subtitle"]] -[[!template text="everything that I'm putting here" start="00:03:19.148" video="mainVideo-realestate" id="subtitle"]] -[[!template text="is just example numbers," start="00:03:20.194" video="mainVideo-realestate" id="subtitle"]] -[[!template text="should not be taken into literal real estate advice." start="00:03:21.280" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I just want to put that out there." start="00:03:25.635" video="mainVideo-realestate" id="subtitle"]] -[[!template text="These are just examples to show you" start="00:03:26.860" video="mainVideo-realestate" id="subtitle"]] -[[!template text="how you can potentially make it on your own," start="00:03:28.368" video="mainVideo-realestate" id="subtitle"]] -[[!template text="do the formulas on your own." start="00:03:30.520" video="mainVideo-realestate" id="subtitle"]] -[[!template new="1" text="Alright, so another cool thing that I did was" start="00:03:32.240" video="mainVideo-realestate" id="subtitle"]] -[[!template text="if there is no tenant income and I tab," start="00:03:35.651" video="mainVideo-realestate" id="subtitle"]] -[[!template text="it says "Enter Tenant Income"." start="00:03:37.738" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So if I don't put anything," start="00:03:40.049" video="mainVideo-realestate" id="subtitle"]] -[[!template text="it will automatically tell me, hey," start="00:03:41.033" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I can't calculate without the tenant income." start="00:03:42.400" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I can also do this right here [ROI field]," start="00:03:44.920" video="mainVideo-realestate" id="subtitle"]] -[[!template text="say the same thing, Enter Tenant Income," start="00:03:46.608" video="mainVideo-realestate" id="subtitle"]] -[[!template text="but I just didn't put it for whatever reason, but" start="00:03:48.476" video="mainVideo-realestate" id="subtitle"]] -[[!template text="after this video, you should be easily able to" start="00:03:50.564" video="mainVideo-realestate" id="subtitle"]] -[[!template text="put it without much struggle." start="00:03:53.813" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Alright, so if that's something you're interested in," start="00:03:57.400" video="mainVideo-realestate" id="subtitle"]] -[[!template text="then keep watching." start="00:04:00.131" video="mainVideo-realestate" id="subtitle"]] -[[!template new="1" text="So let's go over the basics first." start="00:04:02.240" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So, how do we create a table?" start="00:04:05.240" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Well, we can do M-x org-table-create." start="00:04:07.400" video="mainVideo-realestate" id="subtitle"]] -[[!template text="If we run that it, will prompt us in a minibuffer." start="00:04:10.369" video="mainVideo-realestate" id="subtitle"]] -[[!template text="It says table size, columns times row." start="00:04:14.302" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Usually it's rows times columns," start="00:04:16.893" video="mainVideo-realestate" id="subtitle"]] -[[!template text="but it is what it is." start="00:04:18.178" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So let's just leave" start="00:04:19.602" video="mainVideo-realestate" id="subtitle"]] -[[!template text="the default of 5 times 2, and voila, we get this." start="00:04:20.466" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Beautiful. Awesome." start="00:04:24.960" video="mainVideo-realestate" id="subtitle"]] -[[!template new="1" text="So the other way is using the magical C-c C-c" start="00:04:26.400" video="mainVideo-realestate" id="subtitle"]] -[[!template text="in Org Mode, which basically is context-aware" start="00:04:29.511" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and does anything, does the right thing like," start="00:04:32.402" video="mainVideo-realestate" id="subtitle"]] -[[!template text="almost 100% of the time, which is pretty amazing." start="00:04:36.054" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Alright, let's just say I write a pipe, some words," start="00:04:38.600" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and then another pipe, Gopar, and then" start="00:04:42.432" video="mainVideo-realestate" id="subtitle"]] -[[!template text="another pipe. Let's just say we're trying to" start="00:04:44.680" video="mainVideo-realestate" id="subtitle"]] -[[!template text="write it out via text, because in Org mode" start="00:04:47.269" video="mainVideo-realestate" id="subtitle"]] -[[!template text="everything has text." start="00:04:50.600" video="mainVideo-realestate" id="subtitle"]] -[[!template text="There's nothing fancy about it." start="00:04:51.547" video="mainVideo-realestate" id="subtitle"]] -[[!template text="If I do C-c C-c, Org mode should automatically be" start="00:04:53.380" video="mainVideo-realestate" id="subtitle"]] -[[!template text="context-aware that this area is a table." start="00:04:57.673" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So, C-c C-c, boom. So if I press enter, another column." start="00:04:59.840" video="mainVideo-realestate" id="subtitle"]] -[[!template text="If I press tab, it should automatically move me." start="00:05:04.295" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So yeah, so that's pretty much it." start="00:05:06.964" video="mainVideo-realestate" id="subtitle"]] -[[!template text="That's how you get started into the column." start="00:05:09.392" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So, I'm assuming most of the people here already know that." start="00:05:11.920" video="mainVideo-realestate" id="subtitle"]] -[[!template text="This is just the primary basic review." start="00:05:15.592" video="mainVideo-realestate" id="subtitle"]] -[[!template new="1" text="So, let's first go..." start="00:05:17.960" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Let's go dive right into our first formula." start="00:05:19.808" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So I copied some values over here," start="00:05:22.820" video="mainVideo-realestate" id="subtitle"]] -[[!template text="just to save time, and the columns." start="00:05:24.767" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So, let's go ahead and say that" start="00:05:27.697" video="mainVideo-realestate" id="subtitle"]] -[[!template text="we have single family house," start="00:05:29.164" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and the price is a hundred thousand." start="00:05:30.750" video="mainVideo-realestate" id="subtitle"]] -[[!template text="And, Let's say that I want the price," start="00:05:33.019" video="mainVideo-realestate" id="subtitle"]] -[[!template text="the down payment that I want to put is 10%." start="00:05:34.164" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Right. Alright. 10%. Now if I tab" start="00:05:36.432" video="mainVideo-realestate" id="subtitle"]] -[[!template text="or go to the next column, nothing happens." start="00:05:40.528" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Why is that? Well, it's because" start="00:05:42.394" video="mainVideo-realestate" id="subtitle"]] -[[!template text="(you probably guessed it)" start="00:05:43.880" video="mainVideo-realestate" id="subtitle"]] -[[!template text="we haven't written or tied any table formulas." start="00:05:44.985" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So we're saying, alright, enough talk." start="00:05:47.756" video="mainVideo-realestate" id="subtitle"]] -[[!template text="How do we do that?" start="00:05:49.564" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Well, the answer is very simple." start="00:05:50.540" video="mainVideo-realestate" id="subtitle"]] -[[!template text="We do a pound sign (#), if I can find it." start="00:05:52.094" video="mainVideo-realestate" id="subtitle"]] -[[!template text="#+ and then we do TBL for table" start="00:05:54.984" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and then FM for formula." start="00:05:58.713" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So, table formula, and the column." start="00:06:01.120" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So this, you're already halfway" start="00:06:03.429" video="mainVideo-realestate" id="subtitle"]] -[[!template text="to writing your first table formula." start="00:06:04.935" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So let's say we want to automatically," start="00:06:07.064" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Let's just, for exercise," start="00:06:09.172" video="mainVideo-realestate" id="subtitle"]] -[[!template text="we want to put the down payment," start="00:06:10.979" video="mainVideo-realestate" id="subtitle"]] -[[!template text="just put some type of value in there," start="00:06:13.190" video="mainVideo-realestate" id="subtitle"]] -[[!template text="just to make sure that it's working." start="00:06:14.616" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So the way Org Mode refers to columns is," start="00:06:16.383" video="mainVideo-realestate" id="subtitle"]] -[[!template text="we start with the dollar sign ($) and then" start="00:06:20.993" video="mainVideo-realestate" id="subtitle"]] -[[!template text="we put the number that the column is." start="00:06:24.141" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Indexes start with one, not a zero." start="00:06:26.869" video="mainVideo-realestate" id="subtitle"]] -[[!template text="As most of us watching are programmers," start="00:06:29.114" video="mainVideo-realestate" id="subtitle"]] -[[!template text="we're probably used to starting with zero," start="00:06:31.624" video="mainVideo-realestate" id="subtitle"]] -[[!template text="but it starts with one." start="00:06:33.793" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So one, two, three, four, five." start="00:06:34.960" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So down payment is the fifth column," start="00:06:38.331" video="mainVideo-realestate" id="subtitle"]] -[[!template text="we say five, and then we say equal to," start="00:06:39.655" video="mainVideo-realestate" id="subtitle"]] -[[!template text="let's say Gopar." start="00:06:42.304" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Then we do C-c C-c to evaluate it," start="00:06:44.289" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and the table is automatically updated." start="00:06:47.938" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Look at that." start="00:06:50.546" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So when you do just this, dollar sign ($) 5," start="00:06:50.957" video="mainVideo-realestate" id="subtitle"]] -[[!template text="it updates every single column." start="00:06:55.863" video="mainVideo-realestate" id="subtitle"]] -[[!template text="There is a way to specify that this cell only and" start="00:06:57.806" video="mainVideo-realestate" id="subtitle"]] -[[!template text="this cell only but this is out of scope and it's" start="00:07:00.680" video="mainVideo-realestate" id="subtitle"]] -[[!template text="not that hard it's just not in this video." start="00:07:03.324" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I would recommend, I commend you, or, actually" start="00:07:05.640" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I recommend that you go check out the manual for that." start="00:07:08.874" video="mainVideo-realestate" id="subtitle"]] -[[!template new="1" text="All right so, let's say we want to do some basic" start="00:07:13.000" video="mainVideo-realestate" id="subtitle"]] -[[!template text="arithmetic we want to do some list values" start="00:07:17.724" video="mainVideo-realestate" id="subtitle"]] -[[!template text="instead of just putting in text." start="00:07:19.324" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So how do we do that?" start="00:07:20.490" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Well, we have to pull the expression that we want" start="00:07:21.540" video="mainVideo-realestate" id="subtitle"]] -[[!template text="to put in." start="00:07:24.557" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So, for example, if we want to add we'll do 20 plus" start="00:07:25.107" video="mainVideo-realestate" id="subtitle"]] -[[!template text="20 and if we do C-c C-C to evaluate it, it should" start="00:07:27.959" video="mainVideo-realestate" id="subtitle"]] -[[!template text="update every single column, the entire column," start="00:07:31.457" video="mainVideo-realestate" id="subtitle"]] -[[!template text="the fifth column I mean and, tada, it does." start="00:07:34.324" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Cool! So now let's say we want to do a little bit" start="00:07:38.640" video="mainVideo-realestate" id="subtitle"]] -[[!template text="more advanced." start="00:07:41.899" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Let's say we want to add the previous column to" start="00:07:42.656" video="mainVideo-realestate" id="subtitle"]] -[[!template text="this column, so how do we refer to this one?" start="00:07:45.007" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Well, 1-2-3-4 is the fourth column, so we would" start="00:07:47.107" video="mainVideo-realestate" id="subtitle"]] -[[!template text="just simply do $4 and this should automatically" start="00:07:50.990" video="mainVideo-realestate" id="subtitle"]] -[[!template text="be referring to this column (% DP)." start="00:07:55.931" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So we'll do 10 + 20, it's going to be 30 over here," start="00:07:58.157" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and let's do C-C C-c." start="00:08:02.490" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Ooh, error, what happened?" start="00:08:04.274" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Oh my god, oh my god." start="00:08:07.124" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Well, this seems scary but no worries." start="00:08:08.974" video="mainVideo-realestate" id="subtitle"]] -[[!template new="1" text="This is where debugging comes in pretty handy," start="00:08:11.720" video="mainVideo-realestate" id="subtitle"]] -[[!template text="which is actually our next section as you can see." start="00:08:14.078" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So, what happens if we do, if we go into the" start="00:08:16.940" video="mainVideo-realestate" id="subtitle"]] -[[!template text="debugging section, what is the first step?" start="00:08:19.424" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Well, the first step is to try out, is to enable" start="00:08:21.440" video="mainVideo-realestate" id="subtitle"]] -[[!template text="formula debugger." start="00:08:24.890" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So, if you do C-c {, it will turn on a minor mode" start="00:08:26.516" video="mainVideo-realestate" id="subtitle"]] -[[!template text="that whenever you evaluate a table formula," start="00:08:31.394" video="mainVideo-realestate" id="subtitle"]] -[[!template text="the debugger will be enabled," start="00:08:35.510" video="mainVideo-realestate" id="subtitle"]] -[[!template text="will automatically kick in." start="00:08:38.291" video="mainVideo-realestate" id="subtitle"]] -[[!template text="And if you want to disable the debugger," start="00:08:39.457" video="mainVideo-realestate" id="subtitle"]] -[[!template text="you just run the command again, and it will turn off." start="00:08:41.074" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So, let's go ahead and run it. C-c {." start="00:08:43.874" video="mainVideo-realestate" id="subtitle"]] -[[!template text="As you can see in the mini buffer, it says," start="00:08:46.608" video="mainVideo-realestate" id="subtitle"]] -[[!template text=""formula debugging has been turned on". Awesome!" start="00:08:48.791" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So if we go back to our table" start="00:08:51.541" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and we try to run this, and see what's going on, we see..." start="00:08:53.158" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Oh, first off, before we look" start="00:08:58.500" video="mainVideo-realestate" id="subtitle"]] -[[!template text="at the buffer that just opened," start="00:09:00.441" video="mainVideo-realestate" id="subtitle"]] -[[!template text="look at the mini buffer," start="00:09:01.391" video="mainVideo-realestate" id="subtitle"]] -[[!template text="it says "Debugging Formula. Continue to next?"" start="00:09:02.491" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So if you have multiple or a series of formulas," start="00:09:05.074" video="mainVideo-realestate" id="subtitle"]] -[[!template text="it will say, "hey, do you want to debug this one" start="00:09:07.974" video="mainVideo-realestate" id="subtitle"]] -[[!template text="or the next one?"" start="00:09:09.691" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So this is just saying, "hey, do you want to go" start="00:09:10.474" video="mainVideo-realestate" id="subtitle"]] -[[!template text="into the next formula?"" start="00:09:12.058" video="mainVideo-realestate" id="subtitle"]] -[[!template text="And since there's no next formula," start="00:09:13.190" video="mainVideo-realestate" id="subtitle"]] -[[!template text="debugger will just exit out" start="00:09:14.991" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and leave you with the other buffer to see." start="00:09:16.058" video="mainVideo-realestate" id="subtitle"]] -[[!template text="For now, we'll just click no." start="00:09:18.299" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Right now, it doesn't matter if you click yes or no" start="00:09:20.049" video="mainVideo-realestate" id="subtitle"]] -[[!template text="because there's only one formula," start="00:09:22.591" video="mainVideo-realestate" id="subtitle"]] -[[!template text="but we'll just click no, and let's go ahead and" start="00:09:23.640" video="mainVideo-realestate" id="subtitle"]] -[[!template text="pay attention to the new buffer." start="00:09:26.172" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Well, over here it might seem a little confusing," start="00:09:27.757" video="mainVideo-realestate" id="subtitle"]] -[[!template text="but don't worry, we're just going to ignore most of this." start="00:09:29.808" video="mainVideo-realestate" id="subtitle"]] -[[!template text="The first thing that we're going to pay" start="00:09:32.490" video="mainVideo-realestate" id="subtitle"]] -[[!template text="attention is to the original." start="00:09:33.990" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So it says, okay, this is the original, so we have" start="00:09:35.557" video="mainVideo-realestate" id="subtitle"]] -[[!template text="a quote expression, which is just trying to add the" start="00:09:38.167" video="mainVideo-realestate" id="subtitle"]] -[[!template text="fourth column." start="00:09:41.324" video="mainVideo-realestate" id="subtitle"]] -[[!template text="And if we go over here" start="00:09:41.840" video="mainVideo-realestate" id="subtitle"]] -[[!template text="once everything is finalized," start="00:09:42.841" video="mainVideo-realestate" id="subtitle"]] -[[!template text="it says "hey, we're trying to add this 10," start="00:09:44.208" video="mainVideo-realestate" id="subtitle"]] -[[!template text="but it's actually a string 10, and added to 20." start="00:09:47.207" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So of course it's going to be an error, so now we" start="00:09:50.340" video="mainVideo-realestate" id="subtitle"]] -[[!template text="know what the error is." start="00:09:52.425" video="mainVideo-realestate" id="subtitle"]] -[[!template new="1" text="So you're saying all right cool, awesome, now how" start="00:09:54.099" video="mainVideo-realestate" id="subtitle"]] -[[!template text="do we transform that string into a number?" start="00:09:56.190" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Well, Org Mode formulas have these flags" start="00:09:58.940" video="mainVideo-realestate" id="subtitle"]] -[[!template text="that you can use, and essentially a flag looks like this." start="00:10:02.608" video="mainVideo-realestate" id="subtitle"]] -[[!template text="It's a semicolon (;) followed by some letter" start="00:10:05.774" video="mainVideo-realestate" id="subtitle"]] -[[!template text="or some identifier" start="00:10:10.258" video="mainVideo-realestate" id="subtitle"]] -[[!template text="that will let Org mode know that hey," start="00:10:13.370" video="mainVideo-realestate" id="subtitle"]] -[[!template text="this should be turned into a number" start="00:10:16.590" video="mainVideo-realestate" id="subtitle"]] -[[!template text="or this should be turned into whatever." start="00:10:18.291" video="mainVideo-realestate" id="subtitle"]] -[[!template text="There's different ones for alpha literal" start="00:10:20.307" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and for a bunch of..." start="00:10:22.725" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I think there's even "i" for "integer"," start="00:10:23.963" video="mainVideo-realestate" id="subtitle"]] -[[!template text="so it depends what you want." start="00:10:25.474" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So for now we're just going to put "number"" start="00:10:26.919" video="mainVideo-realestate" id="subtitle"]] -[[!template text="because it's a real number." start="00:10:28.203" video="mainVideo-realestate" id="subtitle"]] -[[!template text="If we do this and the debugger is still on," start="00:10:29.590" video="mainVideo-realestate" id="subtitle"]] -[[!template text="(remember because it automatically" start="00:10:33.707" video="mainVideo-realestate" id="subtitle"]] -[[!template text="stays on until we turn it off)," start="00:10:35.374" video="mainVideo-realestate" id="subtitle"]] -[[!template text="if we reevaluate the the formula," start="00:10:36.474" video="mainVideo-realestate" id="subtitle"]] -[[!template text="we should be able to see it." start="00:10:41.640" video="mainVideo-realestate" id="subtitle"]] -[[!template text="But first, before I do that, let's check step two." start="00:10:43.724" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I'll now rerun formulas with C-c * and table," start="00:10:47.479" video="mainVideo-realestate" id="subtitle"]] -[[!template text="which calls org-table-recalculate." start="00:10:52.340" video="mainVideo-realestate" id="subtitle"]] -[[!template text="To do this, you actually have to be inside the table." start="00:10:54.640" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Otherwise, Org mode will try to do some other stuff" start="00:10:58.607" video="mainVideo-realestate" id="subtitle"]] -[[!template text="because it is context-aware, so depending on" start="00:11:02.454" video="mainVideo-realestate" id="subtitle"]] -[[!template text="the context it might do something else." start="00:11:04.425" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So if we do C-c *..." start="00:11:06.424" video="mainVideo-realestate" id="subtitle"]] -[[!template text="As you can see the debugger has kicked in," start="00:11:09.224" video="mainVideo-realestate" id="subtitle"]] -[[!template text="says, "Do you want to continue to next?"" start="00:11:12.824" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Let's press yes (y), and it has been applied." start="00:11:14.202" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So as you can see, it only updated one column--" start="00:11:17.680" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I'm sorry, one row--and the thing is," start="00:11:21.071" video="mainVideo-realestate" id="subtitle"]] -[[!template text="when you run this, the recalculate, it will only" start="00:11:23.077" video="mainVideo-realestate" id="subtitle"]] -[[!template text="run for the current row that you're in." start="00:11:28.107" video="mainVideo-realestate" id="subtitle"]] -[[!template text="If you want to run for the entire table," start="00:11:30.461" video="mainVideo-realestate" id="subtitle"]] -[[!template text="you're going to do C-u C-c *." start="00:11:32.885" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Before I do that, let me turn off the debugger" start="00:11:36.340" video="mainVideo-realestate" id="subtitle"]] -[[!template text="since we no longer are in need of it." start="00:11:38.507" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So C-c {, and debugging has been turned off." start="00:11:40.907" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Now let me do C-u C-c * and as you can see" start="00:11:45.077" video="mainVideo-realestate" id="subtitle"]] -[[!template text="the other rows also calculated, updated as well." start="00:11:50.808" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Beautiful!" start="00:11:54.420" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So as I mentioned, feel free to look / browse the" start="00:11:55.024" video="mainVideo-realestate" id="subtitle"]] -[[!template text="documentation for more flags" start="00:11:58.607" video="mainVideo-realestate" id="subtitle"]] -[[!template text="because each flag has its own special meaning" start="00:12:00.108" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and will do different things, which is pretty cool." start="00:12:02.641" video="mainVideo-realestate" id="subtitle"]] -[[!template new="1" text="All right, cool." start="00:12:07.140" video="mainVideo-realestate" id="subtitle"]] -[[!template text="We're done with debugging and we fixed it." start="00:12:08.224" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So there, now we know how to create formulas" start="00:12:10.107" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and how to debug them whenever they break," start="00:12:12.076" video="mainVideo-realestate" id="subtitle"]] -[[!template text="which is awesome." start="00:12:14.307" video="mainVideo-realestate" id="subtitle"]] -[[!template text="All right, but remember how I said that you can" start="00:12:15.140" video="mainVideo-realestate" id="subtitle"]] -[[!template text="only debug... Whenever you run recalculate," start="00:12:18.424" video="mainVideo-realestate" id="subtitle"]] -[[!template text="It will only run the first formula?" start="00:12:23.660" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Well, let's say you want to have multiple formulas?" start="00:12:25.440" video="mainVideo-realestate" id="subtitle"]] -[[!template text="This is completely valid, except the bad thing is" start="00:12:28.539" video="mainVideo-realestate" id="subtitle"]] -[[!template text="that you have to do C-c C-c C-c on each each one," start="00:12:30.907" video="mainVideo-realestate" id="subtitle"]] -[[!template text="because C-u C-c * won't recalculate everything." start="00:12:34.190" video="mainVideo-realestate" id="subtitle"]] -[[!template text="It won't." start="00:12:39.557" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Sadly, it doesn't do it." start="00:12:40.450" video="mainVideo-realestate" id="subtitle"]] -[[!template text="There is a way that you can do it," start="00:12:41.657" video="mainVideo-realestate" id="subtitle"]] -[[!template text="which is hacking together some elisp." start="00:12:44.289" video="mainVideo-realestate" id="subtitle"]] -[[!template text="You can probably find it" start="00:12:46.460" video="mainVideo-realestate" id="subtitle"]] -[[!template text="or you can probably make it yourself" start="00:12:47.475" video="mainVideo-realestate" id="subtitle"]] -[[!template text="if you look around, but that's out of scope for this." start="00:12:48.807" video="mainVideo-realestate" id="subtitle"]] -[[!template new="1" text="So now, how do we... We can write all the formulas" start="00:12:51.207" video="mainVideo-realestate" id="subtitle"]] -[[!template text="we want in one single line." start="00:12:57.100" video="mainVideo-realestate" id="subtitle"]] -[[!template text="There's a way to to distinguish" start="00:12:59.107" video="mainVideo-realestate" id="subtitle"]] -[[!template text="when one ends and one begins" start="00:13:01.741" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and that is the double colon (::)." start="00:13:03.341" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So right there, and a new formula will begin." start="00:13:04.807" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So for example," start="00:13:07.707" video="mainVideo-realestate" id="subtitle"]] -[[!template text="let's say for the seventh column we say "gopar"." start="00:13:08.474" video="mainVideo-realestate" id="subtitle"]] -[[!template text="If I do C-c C-c, it'll run every single thing" start="00:13:12.324" video="mainVideo-realestate" id="subtitle"]] -[[!template text="so that... "gopar". Tada!" start="00:13:17.507" video="mainVideo-realestate" id="subtitle"]] -[[!template text="There, awesome." start="00:13:19.326" video="mainVideo-realestate" id="subtitle"]] -[[!template text="But this is going to get very annoying if you're" start="00:13:20.724" video="mainVideo-realestate" id="subtitle"]] -[[!template text="simply trying to edit formulas like this, right?" start="00:13:22.540" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So that's where the nicer debugging," start="00:13:25.107" video="mainVideo-realestate" id="subtitle"]] -[[!template text="nicer editing section comes in." start="00:13:27.033" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So, yes, just like as mentioned, table calls" start="00:13:28.890" video="mainVideo-realestate" id="subtitle"]] -[[!template text="only the first formula." start="00:13:32.300" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So what's the step onto this nicer editing section?" start="00:13:33.607" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Try out "C-c ," or `org-edit-special'." start="00:13:36.449" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So let's go back to the table formula and call it..." start="00:13:40.524" video="mainVideo-realestate" id="subtitle"]] -[[!template text="oh my god, look at that," start="00:13:44.657" video="mainVideo-realestate" id="subtitle"]] -[[!template text="a new buffer just for editing," start="00:13:47.690" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and each formula is in its own line to make" start="00:13:49.990" video="mainVideo-realestate" id="subtitle"]] -[[!template text="it easier, which is beautiful!" start="00:13:52.699" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So, let's just say I want to do another calculation." start="00:13:54.724" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Let's do eight times eight, which should be 64," start="00:13:58.815" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and we have no need of putting this flag" start="00:14:02.707" video="mainVideo-realestate" id="subtitle"]] -[[!template text="because the flag only affects it on the input coming in." start="00:14:04.741" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I should have mentioned that earlier." start="00:14:07.540" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Only input coming in." start="00:14:09.174" video="mainVideo-realestate" id="subtitle"]] -[[!template text="There is ways to affect the output," start="00:14:10.874" video="mainVideo-realestate" id="subtitle"]] -[[!template text="which we'll also cover in this topic later on," start="00:14:13.274" video="mainVideo-realestate" id="subtitle"]] -[[!template text="but for now, you can either leave the end flag" start="00:14:16.574" video="mainVideo-realestate" id="subtitle"]] -[[!template text="or leave it out. It will still work fine." start="00:14:19.231" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Let's just leave it out for now." start="00:14:21.991" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Let's just do C-c C-c to make sure" start="00:14:23.508" video="mainVideo-realestate" id="subtitle"]] -[[!template text="that everything is working." start="00:14:26.625" video="mainVideo-realestate" id="subtitle"]] -[[!template text="64. Beautiful." start="00:14:28.874" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So there you have it. You can have multiple formulas" start="00:14:30.790" video="mainVideo-realestate" id="subtitle"]] -[[!template text="just stacked up into one line," start="00:14:33.166" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and whenever you need to edit it," start="00:14:34.878" video="mainVideo-realestate" id="subtitle"]] -[[!template text="just go into that into that line" start="00:14:36.391" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and "C-c ,", and tada!" start="00:14:38.357" video="mainVideo-realestate" id="subtitle"]] -[[!template text="You have this ready, good to go, and for editing." start="00:14:41.124" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Oh and if you want to exit out," start="00:14:44.450" video="mainVideo-realestate" id="subtitle"]] -[[!template text="also just do "C-c ," again and you're back." start="00:14:45.825" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I did not mention that. Sweet!" start="00:14:49.040" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So now we know how to have" start="00:14:51.990" video="mainVideo-realestate" id="subtitle"]] -[[!template text="a better editing experience. Sweet!" start="00:14:54.775" video="mainVideo-realestate" id="subtitle"]] -[[!template new="1" text="So now comes the formatting section which I talked about." start="00:14:57.106" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So what's the first step?" start="00:15:00.340" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Well for formatting, Org mode uses" start="00:15:01.974" video="mainVideo-realestate" id="subtitle"]] -[[!template text="the printf function from C." start="00:15:05.508" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So those who are familiar with C," start="00:15:08.674" video="mainVideo-realestate" id="subtitle"]] -[[!template text="you'll feel right at home because the way you format it" start="00:15:10.375" video="mainVideo-realestate" id="subtitle"]] -[[!template text="is exactly the same way." start="00:15:12.923" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So for example, this will print off" start="00:15:14.040" video="mainVideo-realestate" id="subtitle"]] -[[!template text="a floating number with two decimal points." start="00:15:16.558" video="mainVideo-realestate" id="subtitle"]] -[[!template text="As you can see here, this is how you will use it." start="00:15:18.973" video="mainVideo-realestate" id="subtitle"]] -[[!template text="It will be after the semicolon and it will be "%.2f"." start="00:15:21.640" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So let's go ahead and test that out." start="00:15:26.424" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Actually, let's go ahead to our latest function--" start="00:15:28.158" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I mean, to our latest formula." start="00:15:30.690" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Let's go ahead to the nicer buffer" start="00:15:32.440" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and let's do, Ctrl... Let's enter the semicolon," start="00:15:33.841" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and then let's put the percent sign, we do 2f." start="00:15:39.208" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Actually, let's make it five" start="00:15:45.424" video="mainVideo-realestate" id="subtitle"]] -[[!template text="just to differentiate from the formula, and let's see." start="00:15:49.175" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Let's run it, and tada!" start="00:15:52.690" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So yeah, as you can see, five decimal points." start="00:15:57.274" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and if we want zero decimal points, we can also" start="00:16:00.180" video="mainVideo-realestate" id="subtitle"]] -[[!template text="just move point zero, and tada!" start="00:16:01.957" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Just like that." start="00:16:05.057" video="mainVideo-realestate" id="subtitle"]] -[[!template text="We can also just leave it as is how it was before," start="00:16:06.224" video="mainVideo-realestate" id="subtitle"]] -[[!template text="because before, we didn't even actually need it," start="00:16:08.874" video="mainVideo-realestate" id="subtitle"]] -[[!template text="but yeah, just an example." start="00:16:10.875" video="mainVideo-realestate" id="subtitle"]] -[[!template text="And just a reminder, there are" start="00:16:13.114" video="mainVideo-realestate" id="subtitle"]] -[[!template text="plenty more ways of formatting," start="00:16:15.091" video="mainVideo-realestate" id="subtitle"]] -[[!template text="just look at the documentation." start="00:16:17.358" video="mainVideo-realestate" id="subtitle"]] -[[!template text="There will be more. Basically every single thing" start="00:16:19.740" video="mainVideo-realestate" id="subtitle"]] -[[!template text="that you need, just use the documentation as reference." start="00:16:21.725" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Cool! So now we know how to debug," start="00:16:25.674" video="mainVideo-realestate" id="subtitle"]] -[[!template text="how to write formulas" start="00:16:28.341" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and how to get a better, nicer editing buffer" start="00:16:29.775" video="mainVideo-realestate" id="subtitle"]] -[[!template text="for the formula so we don't have to do it all" start="00:16:32.825" video="mainVideo-realestate" id="subtitle"]] -[[!template text="in a single line." start="00:16:35.125" video="mainVideo-realestate" id="subtitle"]] -[[!template new="1" text="So, what about conditional prompts, like I was" start="00:16:36.340" video="mainVideo-realestate" id="subtitle"]] -[[!template text="showing in the first table in the end goal?" start="00:16:38.757" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Well that's actually pretty simple because we already" start="00:16:43.490" video="mainVideo-realestate" id="subtitle"]] -[[!template text="know how to do this." start="00:16:47.300" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Yes, if you think about it for a second, if we are" start="00:16:48.424" video="mainVideo-realestate" id="subtitle"]] -[[!template text="able to pull lisp s-expressions, then we are able to" start="00:16:51.233" video="mainVideo-realestate" id="subtitle"]] -[[!template text="basically do it already. Here's an example." start="00:16:54.321" video="mainVideo-realestate" id="subtitle"]] -[[!template text="We're saying if the second column is empty, is zero--" start="00:16:56.390" video="mainVideo-realestate" id="subtitle"]] -[[!template text="so actually, this should be with the N flag" start="00:17:01.907" video="mainVideo-realestate" id="subtitle"]] -[[!template text="because we will transform empty values as zero," start="00:17:04.620" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and that's how Org mode will read those." start="00:17:07.040" video="mainVideo-realestate" id="subtitle"]] -[[!template text="It's saying if the second flag is zero," start="00:17:08.820" video="mainVideo-realestate" id="subtitle"]] -[[!template text="then I want you to put "Enter the values."" start="00:17:12.425" video="mainVideo-realestate" id="subtitle"]] -[[!template text="And if it's not empty, we're going to put" start="00:17:17.052" video="mainVideo-realestate" id="subtitle"]] -[[!template text=""Values entered." We're going to recognize." start="00:17:20.540" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So let's go ahead and actually do this." start="00:17:22.290" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So let's grab this, and let's type it in." start="00:17:24.540" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So let's go ahead. "Enter the values," because it" start="00:17:29.090" video="mainVideo-realestate" id="subtitle"]] -[[!template text="doesn't have any." start="00:17:36.557" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So let's go ahead and say "Hello EmacsConf"" start="00:17:37.490" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and let's go ahead and run it again." start="00:17:42.441" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Since there are values," start="00:17:47.324" video="mainVideo-realestate" id="subtitle"]] -[[!template text="it's going to overwrite what's here and put value entered." start="00:17:48.458" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So let's go ahead." start="00:17:51.674" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Tada, so there you go." start="00:17:53.498" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So that is pretty much how you do conditional props," start="00:17:55.790" video="mainVideo-realestate" id="subtitle"]] -[[!template text="which is pretty straightforward" start="00:18:00.624" video="mainVideo-realestate" id="subtitle"]] -[[!template text="once you think about it" start="00:18:01.941" video="mainVideo-realestate" id="subtitle"]] -[[!template text="because if you are able to insert Lisp expressions," start="00:18:02.725" video="mainVideo-realestate" id="subtitle"]] -[[!template text="then you are able to just do that check" start="00:18:05.441" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and do the conditional check yourself." start="00:18:08.241" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So, custom formulas." start="00:18:11.174" video="mainVideo-realestate" id="subtitle"]] -[[!template new="1" text="Yeah, you'll see what I mean." start="00:18:13.640" video="mainVideo-realestate" id="subtitle"]] -[[!template text="We want to be able to put our own custom functions," start="00:18:15.424" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and you probably have an idea how to do this already." start="00:18:20.024" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Yes, we also know how to do this already." start="00:18:23.990" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Before I continue, I'm going to say that I already" start="00:18:27.060" video="mainVideo-realestate" id="subtitle"]] -[[!template text="have some formulas that I use" start="00:18:30.457" video="mainVideo-realestate" id="subtitle"]] -[[!template text="which are not part of this talk" start="00:18:31.941" video="mainVideo-realestate" id="subtitle"]] -[[!template text="because they're just functions that calculate some stuff." start="00:18:33.375" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So for example, they calculate the monthly mortgage," start="00:18:37.490" video="mainVideo-realestate" id="subtitle"]] -[[!template text="the monthly PMI, property tax, homeowners insurance," start="00:18:40.090" video="mainVideo-realestate" id="subtitle"]] -[[!template text="so a bunch of other stuff." start="00:18:43.357" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I have these functions already and they are a bit off," start="00:18:44.857" video="mainVideo-realestate" id="subtitle"]] -[[!template text="but for this example, they're doing everything." start="00:18:49.829" video="mainVideo-realestate" id="subtitle"]] -[[!template text="It's close enough, so don't worry too much." start="00:18:52.312" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Just an example, you can have your own function" start="00:18:54.490" video="mainVideo-realestate" id="subtitle"]] -[[!template text="that does something else like calculate" start="00:18:56.924" video="mainVideo-realestate" id="subtitle"]] -[[!template text="a REI B rental or something like that." start="00:18:59.313" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So you can do whatever you want." start="00:19:01.640" video="mainVideo-realestate" id="subtitle"]] -[[!template text="As long as you can call via Lisp," start="00:19:03.220" video="mainVideo-realestate" id="subtitle"]] -[[!template text="you can call it in Org mode, in the table formulas." start="00:19:04.824" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So let's exit out of there." start="00:19:07.900" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Now that we know how to do everything," start="00:19:11.437" video="mainVideo-realestate" id="subtitle"]] -[[!template text="let me go back to the original table and go from there." start="00:19:13.808" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Let me close all these out actually." start="00:19:21.024" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Now let's go back and revisit this table," start="00:19:26.624" video="mainVideo-realestate" id="subtitle"]] -[[!template text="since we'll be much, much more familiar" start="00:19:29.624" video="mainVideo-realestate" id="subtitle"]] -[[!template text="except for one thing, which I will explain." start="00:19:31.620" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So we have the constants right there" start="00:19:35.518" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and we have the house prices" start="00:19:38.041" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and we have everything just like I mentioned before." start="00:19:39.691" video="mainVideo-realestate" id="subtitle"]] -[[!template text="The main part that we want to look at" start="00:19:42.500" video="mainVideo-realestate" id="subtitle"]] -[[!template text="is the table formula." start="00:19:44.123" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So let's open up our special editing buffer," start="00:19:45.124" video="mainVideo-realestate" id="subtitle"]] -[[!template text=""C-c ,"," start="00:19:47.574" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and as you can see, I have some right here." start="00:19:49.774" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So, the fifth column I'm saying," start="00:19:52.490" video="mainVideo-realestate" id="subtitle"]] -[[!template text=""Hey, we're gonna call this function" start="00:19:53.624" video="mainVideo-realestate" id="subtitle"]] -[[!template text="rei-calculate-down-payment, and I'm gonna" start="00:19:55.924" video="mainVideo-realestate" id="subtitle"]] -[[!template text="pass in the third column and fourth column" start="00:19:58.657" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and I'm going to pass in t." (true)" start="00:20:00.758" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I believe this is just to normalize," start="00:20:02.340" video="mainVideo-realestate" id="subtitle"]] -[[!template text="to convert to the proper decimal place," start="00:20:07.174" video="mainVideo-realestate" id="subtitle"]] -[[!template text="so let's not worry too much about that." start="00:20:12.157" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Then for the sixth column, we're going to say" start="00:20:14.179" video="mainVideo-realestate" id="subtitle"]] -[[!template text=""I calculate the monthly mortgage."" start="00:20:16.790" video="mainVideo-realestate" id="subtitle"]] -[[!template text="We're going to pass in the third column" start="00:20:18.145" video="mainVideo-realestate" id="subtitle"]] -[[!template text="the INTEREST_RATE, which we have" start="00:20:20.224" video="mainVideo-realestate" id="subtitle"]] -[[!template text="defined over here in the constants." start="00:20:21.439" video="mainVideo-realestate" id="subtitle"]] -[[!template text="The 30, I believe this is for 30 years," start="00:20:22.980" video="mainVideo-realestate" id="subtitle"]] -[[!template text="PMI, the PROPERTY_TAX and HOME_INSURANCE," start="00:20:26.374" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and then the fourth column." start="00:20:29.423" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Then everything is going to be accepted as numbers," start="00:20:30.874" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and we're going to have two decimals" start="00:20:33.924" video="mainVideo-realestate" id="subtitle"]] -[[!template text="at the end of the place." start="00:20:35.174" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So, what else?" start="00:20:36.274" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Over here is where we have our conditionals." start="00:20:37.607" video="mainVideo-realestate" id="subtitle"]] -[[!template text="We're saying, "hey, if the seventh column is 0," start="00:20:40.174" video="mainVideo-realestate" id="subtitle"]] -[[!template text="press 'Enter Tenant Income'."" start="00:20:42.374" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Over here as well, if the seventh column is zero," start="00:20:44.402" video="mainVideo-realestate" id="subtitle"]] -[[!template text="we're going to press 'Enter Tenant Income'" start="00:20:48.507" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and for this one we're going to say," start="00:20:51.824" video="mainVideo-realestate" id="subtitle"]] -[[!template text=""Hey, we're going to normalize the price."" start="00:20:53.705" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I believe this is a 1% rule." start="00:20:56.040" video="mainVideo-realestate" id="subtitle"]] -[[!template text="This could have been extracted into a function," start="00:20:59.340" video="mainVideo-realestate" id="subtitle"]] -[[!template text="but I just did the calculation right here." start="00:21:01.490" video="mainVideo-realestate" id="subtitle"]] -[[!template text="This, I believe, is the ROI, 12 months." start="00:21:04.239" video="mainVideo-realestate" id="subtitle"]] -[[!template text="This is just calculating the cash flow." start="00:21:07.990" video="mainVideo-realestate" id="subtitle"]] -[[!template text="This is a very rudimentary function or formula." start="00:21:11.107" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Do not use this because there is way more" start="00:21:15.407" video="mainVideo-realestate" id="subtitle"]] -[[!template text="to go into calculating the cash flow" start="00:21:16.733" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and also, it differs from person to person." start="00:21:18.841" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Some people are more conservative," start="00:21:21.599" video="mainVideo-realestate" id="subtitle"]] -[[!template text="other people are way more liberal, so it just" start="00:21:23.874" video="mainVideo-realestate" id="subtitle"]] -[[!template text="depends how you want to calculate it." start="00:21:26.960" video="mainVideo-realestate" id="subtitle"]] -[[!template text="As you can see, we have the N flag for numeric number" start="00:21:28.974" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and then we're saying we're formatting" start="00:21:34.241" video="mainVideo-realestate" id="subtitle"]] -[[!template text="to one decimal place." start="00:21:36.190" video="mainVideo-realestate" id="subtitle"]] -[[!template text="The %% sign is just to input a percent sign as itself." start="00:21:37.794" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Otherwise, Org mode is going to think" start="00:21:43.208" video="mainVideo-realestate" id="subtitle"]] -[[!template text="it's some type of a formatter, which it's not." start="00:21:45.420" video="mainVideo-realestate" id="subtitle"]] -[[!template text="If you do... As I mentioned," start="00:21:48.040" video="mainVideo-realestate" id="subtitle"]] -[[!template text="if you've used the printf function in C or C++," start="00:21:49.240" video="mainVideo-realestate" id="subtitle"]] -[[!template text="then you probably know how to use it." start="00:21:51.790" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Okay, so this is pretty much everything in a nutshell." start="00:21:55.607" video="mainVideo-realestate" id="subtitle"]] -[[!template new="1" text="So, one thing that I do want to say" start="00:22:01.924" video="mainVideo-realestate" id="subtitle"]] -[[!template text="is the last section," start="00:22:05.070" video="mainVideo-realestate" id="subtitle"]] -[[!template text="which is automatically updating," start="00:22:06.479" video="mainVideo-realestate" id="subtitle"]] -[[!template text="which is the part that blew my mind" start="00:22:07.874" video="mainVideo-realestate" id="subtitle"]] -[[!template text="when I realized that Org Mode can do this." start="00:22:10.175" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So how do we do it?" start="00:22:11.557" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Well, you probably guessed just from looking at" start="00:22:12.577" video="mainVideo-realestate" id="subtitle"]] -[[!template text="at the first table that we have right now." start="00:22:14.660" video="mainVideo-realestate" id="subtitle"]] -[[!template text="We add a column at the beginning" start="00:22:18.424" video="mainVideo-realestate" id="subtitle"]] -[[!template text="of the table with a percent (%)--" start="00:22:20.874" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I'm sorry, with the pound sign (#)" start="00:22:22.957" video="mainVideo-realestate" id="subtitle"]] -[[!template text="or hashtag as the younger kids call it." start="00:22:24.957" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So this is what we do." start="00:22:28.557" video="mainVideo-realestate" id="subtitle"]] -[[!template text="We added a column at the beginning of the" start="00:22:31.145" video="mainVideo-realestate" id="subtitle"]] -[[!template text="table, we do pound sign (#)." start="00:22:32.820" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So this is what it's for." start="00:22:35.084" video="mainVideo-realestate" id="subtitle"]] -[[!template text="This lets Org mode know that "hey," start="00:22:35.890" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I want the values, the table formulas," start="00:22:38.840" video="mainVideo-realestate" id="subtitle"]] -[[!template text="to automatically run on each tab change."" start="00:22:41.240" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Now I believe that you can make it so that" start="00:22:44.057" video="mainVideo-realestate" id="subtitle"]] -[[!template text="it changes, so that it updates on every keystroke." start="00:22:46.340" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I think that's too much." start="00:22:49.223" video="mainVideo-realestate" id="subtitle"]] -[[!template text="And then you can also make it so that" start="00:22:51.124" video="mainVideo-realestate" id="subtitle"]] -[[!template text="only certain rows update or certain columns." start="00:22:53.107" video="mainVideo-realestate" id="subtitle"]] -[[!template text="There's a plethora of things that you can do." start="00:22:56.020" video="mainVideo-realestate" id="subtitle"]] -[[!template text="You should definitely read up on the documentation," start="00:22:58.319" video="mainVideo-realestate" id="subtitle"]] -[[!template text="because you will probably make a way better talk," start="00:23:01.024" video="mainVideo-realestate" id="subtitle"]] -[[!template text="a way more advanced talk than I on this one," start="00:23:03.525" video="mainVideo-realestate" id="subtitle"]] -[[!template text="so I'm looking forward for that." start="00:23:07.074" video="mainVideo-realestate" id="subtitle"]] -[[!template text="But this is essentially how you build" start="00:23:09.674" video="mainVideo-realestate" id="subtitle"]] -[[!template text="a Org mode table formula that will help you know" start="00:23:12.460" video="mainVideo-realestate" id="subtitle"]] -[[!template text="if a property is correct." start="00:23:15.508" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So, let's go ahead and as a final out to this demo," start="00:23:17.225" video="mainVideo-realestate" id="subtitle"]] -[[!template text="let's go ahead and enter a new column." start="00:23:22.440" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Org-mode automatically puts the pound sign (#)," start="00:23:25.420" video="mainVideo-realestate" id="subtitle"]] -[[!template text="which is awesome, and let's just say 'Emacs House'," start="00:23:30.274" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and let's say it is 100k." start="00:23:35.540" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So 100k, and as you can see it's already trying to" start="00:23:39.690" video="mainVideo-realestate" id="subtitle"]] -[[!template text="calculate the monthly mortgage," start="00:23:44.340" video="mainVideo-realestate" id="subtitle"]] -[[!template text="but we'll see about that," start="00:23:46.140" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and let's just put 10% down." start="00:23:47.190" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So 10% of 100k should be 10,000." start="00:23:49.880" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So 10,000, correct, and the monthly mortgage is that" start="00:23:53.157" video="mainVideo-realestate" id="subtitle"]] -[[!template text="and let's just say the tenant income is," start="00:23:56.408" video="mainVideo-realestate" id="subtitle"]] -[[!template text="as you can see right here," start="00:24:00.190" video="mainVideo-realestate" id="subtitle"]] -[[!template text="tenant income is, let's say 1500." start="00:24:01.757" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Is it passing the 1% rule?" start="00:24:05.974" video="mainVideo-realestate" id="subtitle"]] -[[!template text="Yep! What's my ROI?" start="00:24:07.374" video="mainVideo-realestate" id="subtitle"]] -[[!template text="118%, which is kind of cool actually." start="00:24:09.524" video="mainVideo-realestate" id="subtitle"]] -[[!template text="That's a nice deal." start="00:24:13.880" video="mainVideo-realestate" id="subtitle"]] -[[!template text="So this is a rudimentary way of" start="00:24:14.907" video="mainVideo-realestate" id="subtitle"]] -[[!template text="calculating deals in Org mode." start="00:24:17.757" video="mainVideo-realestate" id="subtitle"]] -[[!template text="I hope you found it interesting, and yeah, that is it." start="00:24:20.419" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""Hey, I'm Gopar and this is the""" start="00:00:00.000" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Real Estate and Org Mode Table Formulas talk.""" start="00:00:05.454" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Not very creative, but it is what it is.""" start="00:00:07.640" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Now I just want to say that everything I talk about here""" start="00:00:09.880" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""is in the Org Mode in the Emacs manual.""" start="00:00:13.052" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I posted a link to the web version,""" start="00:00:15.903" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""but it should be inside of Emacs as well.""" start="00:00:17.910" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""Now before I start, I want to showcase the end goal.""" start="00:00:20.480" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""That way you know if you guys want to""" start="00:00:25.097" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""actually see the talk or not.""" start="00:00:26.807" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So I always think that's pretty cool to see""" start="00:00:28.740" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""what you're actually going to build""" start="00:00:30.492" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""before you start building it.""" start="00:00:31.518" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Alright. So let me start off with the goal,""" start="00:00:32.680" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""the end goal. Here we have a simple table formula""" start="00:00:34.286" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and we have some constants, some values inside the list--""" start="00:00:38.763" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""inside the table, I'm sorry,""" start="00:00:42.614" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and some other stuff that we will get to,""" start="00:00:44.640" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""but for now... I don't want to spoil too much.""" start="00:00:47.673" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I just want to give you a demo""" start="00:00:49.280" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""of how it actually works.""" start="00:00:50.328" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""We have a few values. Let me first go over the constants.""" start="00:00:51.800" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""We have PMI, which stands for""" start="00:00:56.095" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""private mortgage insurance,""" start="00:00:57.582" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""so it's insurance that you'll have to pay""" start="00:00:57.591" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""depending on how much money you put into the deal.""" start="00:01:00.537" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""The property tax, which is self-explanatory,""" start="00:01:03.640" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""the tax that you owe for owning the property,""" start="00:01:06.068" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and then home insurance,""" start="00:01:09.317" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and the interest rate at the loan that you get.""" start="00:01:11.107" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So, here we have a few columns.""" start="00:01:13.440" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""The first one is called House,""" start="00:01:15.667" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""which I usually just put a description of the house""" start="00:01:17.412" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""with the link of the posting,""" start="00:01:20.624" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""the price of the house,""" start="00:01:21.127" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""the percentage down payment (this I play around with""" start="00:01:22.494" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""to see how much the deal will be structured),""" start="00:01:26.190" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""the down payment (which is calculated from""" start="00:01:27.474" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""the previous two columns),""" start="00:01:30.529" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""the monthly mortgage (which is calculated as well),""" start="00:01:31.755" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and then the tenant income (which is what I suppose""" start="00:01:34.145" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""would be an example of the tenant income""" start="00:01:37.996" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""that I can potentially make off the property,""" start="00:01:41.006" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""the 1% rule and the ROI.""" start="00:01:42.753" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I'll quickly go over the last two columns.""" start="00:01:45.540" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So first is the 1% rule.""" start="00:01:47.708" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""The 1% rule is essentially""" start="00:01:49.300" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""a "rule," in quotes, that says that""" start="00:01:50.880" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""if a property matches this specific formula,""" start="00:01:53.589" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""it is a good deal to look into.""" start="00:01:56.278" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So for example, the first two pass,""" start="00:01:58.320" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and the last one does not pass.""" start="00:02:00.890" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""The last one, at a quick glance,""" start="00:02:02.677" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""we can just ignore it and say,""" start="00:02:04.105" video="mainVideo-realestate" id="subtitle"]] +[[!template text=""""hey, that's not going to fly,"""" start="00:02:05.472" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""we'll just ignore it.""" start="00:02:06.477" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I won't go too much into details.""" start="00:02:08.000" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""That's just a brief summary.""" start="00:02:09.891" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""So now the ROI is the return on investment.""" start="00:02:11.520" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So it says "how much of a return am I getting""" start="00:02:14.149" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""on the amount that I invested?"""" start="00:02:17.600" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So let's say you put in $12,000,""" start="00:02:18.960" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and at the end of the year, you cashflow $6,000.""" start="00:02:21.168" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So if you calculate the ROI off of that,""" start="00:02:23.456" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""you get a 50% return on investment.""" start="00:02:26.127" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""In two years, you'll make your money back,""" start="00:02:28.477" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""which is pretty good.""" start="00:02:30.086" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Then all the rest of the years,""" start="00:02:31.734" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""you'll just slowly be reaping in all that,""" start="00:02:32.719" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""all the excess cash flow.""" start="00:02:34.348" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""But yeah, that's it in a nutshell.""" start="00:02:36.640" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""So let me demo it real quick.""" start="00:02:40.040" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So for example, I'm going to change the down payment,""" start="00:02:42.270" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""but I want you to pay attention""" start="00:02:44.259" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""to this column [down payment]""" start="00:02:45.745" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and the monthly mortgage column.""" start="00:02:48.214" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So right here [down payment] is $25,000,""" start="00:02:49.840" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and here [monthly mortgage] is around $1,200,""" start="00:02:51.727" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""a little under $1,300.""" start="00:02:53.473" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So what happens if I say, you know,""" start="00:02:55.180" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""what I'm going to change the down payment""" start="00:02:57.350" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""to 5% instead, because I just""" start="00:02:58.796" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""don't want to put 10.""" start="00:03:00.949" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So let's just put say 5.""" start="00:03:02.560" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Then I tab out of here, and voila -""" start="00:03:04.126" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""you see it updated to half of $25,000.""" start="00:03:06.275" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So now it's $12,000,""" start="00:03:08.523" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and this [monthly mortgage] went up""" start="00:03:09.947" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""over actually $1,300,""" start="00:03:10.690" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and then this [1% rule] hasn't changed at all""" start="00:03:12.234" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and the ROI is there.""" start="00:03:14.784" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So one thing that I should mention is""" start="00:03:17.680" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""everything that I'm putting here""" start="00:03:19.148" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""is just example numbers,""" start="00:03:20.194" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""should not be taken into literal real estate advice.""" start="00:03:21.280" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I just want to put that out there.""" start="00:03:25.635" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""These are just examples to show you""" start="00:03:26.860" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""how you can potentially make it on your own,""" start="00:03:28.368" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""do the formulas on your own.""" start="00:03:30.520" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""Alright, so another cool thing that I did was""" start="00:03:32.240" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""if there is no tenant income and I tab,""" start="00:03:35.651" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""it says "Enter Tenant Income".""" start="00:03:37.738" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So if I don't put anything,""" start="00:03:40.049" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""it will automatically tell me, hey,""" start="00:03:41.033" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I can't calculate without the tenant income.""" start="00:03:42.400" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I can also do this right here [ROI field],""" start="00:03:44.920" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""say the same thing, Enter Tenant Income,""" start="00:03:46.608" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""but I just didn't put it for whatever reason, but""" start="00:03:48.476" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""after this video, you should be easily able to""" start="00:03:50.564" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""put it without much struggle.""" start="00:03:53.813" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Alright, so if that's something you're interested in,""" start="00:03:57.400" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""then keep watching.""" start="00:04:00.131" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""So let's go over the basics first.""" start="00:04:02.240" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So, how do we create a table?""" start="00:04:05.240" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Well, we can do M-x org-table-create.""" start="00:04:07.400" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""If we run that it, will prompt us in a minibuffer.""" start="00:04:10.369" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""It says table size, columns times row.""" start="00:04:14.302" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Usually it's rows times columns,""" start="00:04:16.893" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""but it is what it is.""" start="00:04:18.178" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So let's just leave""" start="00:04:19.602" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""the default of 5 times 2, and voila, we get this.""" start="00:04:20.466" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Beautiful. Awesome.""" start="00:04:24.960" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""So the other way is using the magical C-c C-c""" start="00:04:26.400" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""in Org Mode, which basically is context-aware""" start="00:04:29.511" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and does anything, does the right thing like,""" start="00:04:32.402" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""almost 100% of the time, which is pretty amazing.""" start="00:04:36.054" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Alright, let's just say I write a pipe, some words,""" start="00:04:38.600" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and then another pipe, Gopar, and then""" start="00:04:42.432" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""another pipe. Let's just say we're trying to""" start="00:04:44.680" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""write it out via text, because in Org mode""" start="00:04:47.269" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""everything has text.""" start="00:04:50.600" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""There's nothing fancy about it.""" start="00:04:51.547" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""If I do C-c C-c, Org mode should automatically be""" start="00:04:53.380" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""context-aware that this area is a table.""" start="00:04:57.673" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So, C-c C-c, boom. So if I press enter, another column.""" start="00:04:59.840" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""If I press tab, it should automatically move me.""" start="00:05:04.295" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So yeah, so that's pretty much it.""" start="00:05:06.964" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""That's how you get started into the column.""" start="00:05:09.392" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So, I'm assuming most of the people here already know that.""" start="00:05:11.920" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""This is just the primary basic review.""" start="00:05:15.592" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""So, let's first go...""" start="00:05:17.960" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Let's go dive right into our first formula.""" start="00:05:19.808" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So I copied some values over here,""" start="00:05:22.820" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""just to save time, and the columns.""" start="00:05:24.767" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So, let's go ahead and say that""" start="00:05:27.697" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""we have single family house,""" start="00:05:29.164" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and the price is a hundred thousand.""" start="00:05:30.750" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""And, Let's say that I want the price,""" start="00:05:33.019" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""the down payment that I want to put is 10%.""" start="00:05:34.164" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Right. Alright. 10%. Now if I tab""" start="00:05:36.432" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""or go to the next column, nothing happens.""" start="00:05:40.528" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Why is that? Well, it's because""" start="00:05:42.394" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""(you probably guessed it)""" start="00:05:43.880" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""we haven't written or tied any table formulas.""" start="00:05:44.985" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So we're saying, alright, enough talk.""" start="00:05:47.756" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""How do we do that?""" start="00:05:49.564" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Well, the answer is very simple.""" start="00:05:50.540" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""We do a pound sign (#), if I can find it.""" start="00:05:52.094" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""\#+ and then we do TBL for table""" start="00:05:54.984" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and then FM for formula.""" start="00:05:58.713" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So, table formula, and the column.""" start="00:06:01.120" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So this, you're already halfway""" start="00:06:03.429" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""to writing your first table formula.""" start="00:06:04.935" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So let's say we want to automatically,""" start="00:06:07.064" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Let's just, for exercise,""" start="00:06:09.172" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""we want to put the down payment,""" start="00:06:10.979" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""just put some type of value in there,""" start="00:06:13.190" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""just to make sure that it's working.""" start="00:06:14.616" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So the way Org Mode refers to columns is,""" start="00:06:16.383" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""we start with the dollar sign ($) and then""" start="00:06:20.993" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""we put the number that the column is.""" start="00:06:24.141" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Indexes start with one, not a zero.""" start="00:06:26.869" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""As most of us watching are programmers,""" start="00:06:29.114" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""we're probably used to starting with zero,""" start="00:06:31.624" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""but it starts with one.""" start="00:06:33.793" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So one, two, three, four, five.""" start="00:06:34.960" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So down payment is the fifth column,""" start="00:06:38.331" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""we say five, and then we say equal to,""" start="00:06:39.655" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""let's say Gopar.""" start="00:06:42.304" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Then we do C-c C-c to evaluate it,""" start="00:06:44.289" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and the table is automatically updated.""" start="00:06:47.938" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Look at that.""" start="00:06:50.546" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So when you do just this, dollar sign ($) 5,""" start="00:06:50.957" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""it updates every single column.""" start="00:06:55.863" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""There is a way to specify that this cell only and""" start="00:06:57.806" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""this cell only but this is out of scope and it's""" start="00:07:00.680" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""not that hard it's just not in this video.""" start="00:07:03.324" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I would recommend, I commend you, or, actually""" start="00:07:05.640" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I recommend that you go check out the manual for that.""" start="00:07:08.874" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""All right so, let's say we want to do some basic""" start="00:07:13.000" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""arithmetic we want to do some list values""" start="00:07:17.724" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""instead of just putting in text.""" start="00:07:19.324" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So how do we do that?""" start="00:07:20.490" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Well, we have to pull the expression that we want""" start="00:07:21.540" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""to put in.""" start="00:07:24.557" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So, for example, if we want to add we'll do 20 plus""" start="00:07:25.107" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""20 and if we do C-c C-C to evaluate it, it should""" start="00:07:27.959" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""update every single column, the entire column,""" start="00:07:31.457" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""the fifth column I mean and, tada, it does.""" start="00:07:34.324" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Cool! So now let's say we want to do a little bit""" start="00:07:38.640" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""more advanced.""" start="00:07:41.899" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Let's say we want to add the previous column to""" start="00:07:42.656" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""this column, so how do we refer to this one?""" start="00:07:45.007" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Well, 1-2-3-4 is the fourth column, so we would""" start="00:07:47.107" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""just simply do $4 and this should automatically""" start="00:07:50.990" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""be referring to this column (% DP).""" start="00:07:55.931" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So we'll do 10 + 20, it's going to be 30 over here,""" start="00:07:58.157" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and let's do C-C C-c.""" start="00:08:02.490" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Ooh, error, what happened?""" start="00:08:04.274" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Oh my god, oh my god.""" start="00:08:07.124" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Well, this seems scary but no worries.""" start="00:08:08.974" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""This is where debugging comes in pretty handy,""" start="00:08:11.720" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""which is actually our next section as you can see.""" start="00:08:14.078" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So, what happens if we do, if we go into the""" start="00:08:16.940" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""debugging section, what is the first step?""" start="00:08:19.424" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Well, the first step is to try out, is to enable""" start="00:08:21.440" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""formula debugger.""" start="00:08:24.890" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So, if you do C-c {, it will turn on a minor mode""" start="00:08:26.516" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""that whenever you evaluate a table formula,""" start="00:08:31.394" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""the debugger will be enabled,""" start="00:08:35.510" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""will automatically kick in.""" start="00:08:38.291" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""And if you want to disable the debugger,""" start="00:08:39.457" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""you just run the command again, and it will turn off.""" start="00:08:41.074" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So, let's go ahead and run it. C-c {.""" start="00:08:43.874" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""As you can see in the mini buffer, it says,""" start="00:08:46.608" video="mainVideo-realestate" id="subtitle"]] +[[!template text=""""formula debugging has been turned on". Awesome!""" start="00:08:48.791" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So if we go back to our table""" start="00:08:51.541" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and we try to run this, and see what's going on, we see...""" start="00:08:53.158" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Oh, first off, before we look""" start="00:08:58.500" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""at the buffer that just opened,""" start="00:09:00.441" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""look at the mini buffer,""" start="00:09:01.391" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""it says "Debugging Formula. Continue to next?"""" start="00:09:02.491" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So if you have multiple or a series of formulas,""" start="00:09:05.074" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""it will say, "hey, do you want to debug this one""" start="00:09:07.974" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""or the next one?"""" start="00:09:09.691" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So this is just saying, "hey, do you want to go""" start="00:09:10.474" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""into the next formula?"""" start="00:09:12.058" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""And since there's no next formula,""" start="00:09:13.190" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""debugger will just exit out""" start="00:09:14.991" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and leave you with the other buffer to see.""" start="00:09:16.058" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""For now, we'll just click no.""" start="00:09:18.299" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Right now, it doesn't matter if you click yes or no""" start="00:09:20.049" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""because there's only one formula,""" start="00:09:22.591" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""but we'll just click no, and let's go ahead and""" start="00:09:23.640" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""pay attention to the new buffer.""" start="00:09:26.172" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Well, over here it might seem a little confusing,""" start="00:09:27.757" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""but don't worry, we're just going to ignore most of this.""" start="00:09:29.808" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""The first thing that we're going to pay""" start="00:09:32.490" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""attention is to the original.""" start="00:09:33.990" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So it says, okay, this is the original, so we have""" start="00:09:35.557" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""a quote expression, which is just trying to add the""" start="00:09:38.167" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""fourth column.""" start="00:09:41.324" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""And if we go over here""" start="00:09:41.840" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""once everything is finalized,""" start="00:09:42.841" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""it says "hey, we're trying to add this 10,""" start="00:09:44.208" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""but it's actually a string 10, and added to 20.""" start="00:09:47.207" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So of course it's going to be an error, so now we""" start="00:09:50.340" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""know what the error is.""" start="00:09:52.425" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""So you're saying all right cool, awesome, now how""" start="00:09:54.099" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""do we transform that string into a number?""" start="00:09:56.190" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Well, Org Mode formulas have these flags""" start="00:09:58.940" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""that you can use, and essentially a flag looks like this.""" start="00:10:02.608" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""It's a semicolon (;) followed by some letter""" start="00:10:05.774" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""or some identifier""" start="00:10:10.258" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""that will let Org mode know that hey,""" start="00:10:13.370" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""this should be turned into a number""" start="00:10:16.590" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""or this should be turned into whatever.""" start="00:10:18.291" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""There's different ones for alpha literal""" start="00:10:20.307" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and for a bunch of...""" start="00:10:22.725" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I think there's even "i" for "integer",""" start="00:10:23.963" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""so it depends what you want.""" start="00:10:25.474" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So for now we're just going to put "number"""" start="00:10:26.919" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""because it's a real number.""" start="00:10:28.203" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""If we do this and the debugger is still on,""" start="00:10:29.590" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""(remember because it automatically""" start="00:10:33.707" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""stays on until we turn it off),""" start="00:10:35.374" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""if we reevaluate the the formula,""" start="00:10:36.474" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""we should be able to see it.""" start="00:10:41.640" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""But first, before I do that, let's check step two.""" start="00:10:43.724" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I'll now rerun formulas with C-c * and table,""" start="00:10:47.479" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""which calls org-table-recalculate.""" start="00:10:52.340" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""To do this, you actually have to be inside the table.""" start="00:10:54.640" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Otherwise, Org mode will try to do some other stuff""" start="00:10:58.607" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""because it is context-aware, so depending on""" start="00:11:02.454" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""the context it might do something else.""" start="00:11:04.425" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So if we do C-c *...""" start="00:11:06.424" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""As you can see the debugger has kicked in,""" start="00:11:09.224" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""says, "Do you want to continue to next?"""" start="00:11:12.824" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Let's press yes (y), and it has been applied.""" start="00:11:14.202" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So as you can see, it only updated one column--""" start="00:11:17.680" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I'm sorry, one row--and the thing is,""" start="00:11:21.071" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""when you run this, the recalculate, it will only""" start="00:11:23.077" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""run for the current row that you're in.""" start="00:11:28.107" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""If you want to run for the entire table,""" start="00:11:30.461" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""you're going to do C-u C-c *.""" start="00:11:32.885" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Before I do that, let me turn off the debugger""" start="00:11:36.340" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""since we no longer are in need of it.""" start="00:11:38.507" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So C-c {, and debugging has been turned off.""" start="00:11:40.907" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Now let me do C-u C-c * and as you can see""" start="00:11:45.077" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""the other rows also calculated, updated as well.""" start="00:11:50.808" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Beautiful!""" start="00:11:54.420" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So as I mentioned, feel free to look / browse the""" start="00:11:55.024" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""documentation for more flags""" start="00:11:58.607" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""because each flag has its own special meaning""" start="00:12:00.108" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and will do different things, which is pretty cool.""" start="00:12:02.641" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""All right, cool.""" start="00:12:07.140" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""We're done with debugging and we fixed it.""" start="00:12:08.224" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So there, now we know how to create formulas""" start="00:12:10.107" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and how to debug them whenever they break,""" start="00:12:12.076" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""which is awesome.""" start="00:12:14.307" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""All right, but remember how I said that you can""" start="00:12:15.140" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""only debug... Whenever you run recalculate,""" start="00:12:18.424" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""It will only run the first formula?""" start="00:12:23.660" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Well, let's say you want to have multiple formulas?""" start="00:12:25.440" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""This is completely valid, except the bad thing is""" start="00:12:28.539" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""that you have to do C-c C-c C-c on each each one,""" start="00:12:30.907" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""because C-u C-c * won't recalculate everything.""" start="00:12:34.190" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""It won't.""" start="00:12:39.557" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Sadly, it doesn't do it.""" start="00:12:40.450" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""There is a way that you can do it,""" start="00:12:41.657" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""which is hacking together some elisp.""" start="00:12:44.289" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""You can probably find it""" start="00:12:46.460" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""or you can probably make it yourself""" start="00:12:47.475" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""if you look around, but that's out of scope for this.""" start="00:12:48.807" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""So now, how do we... We can write all the formulas""" start="00:12:51.207" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""we want in one single line.""" start="00:12:57.100" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""There's a way to to distinguish""" start="00:12:59.107" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""when one ends and one begins""" start="00:13:01.741" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and that is the double colon (::).""" start="00:13:03.341" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So right there, and a new formula will begin.""" start="00:13:04.807" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So for example,""" start="00:13:07.707" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""let's say for the seventh column we say "gopar".""" start="00:13:08.474" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""If I do C-c C-c, it'll run every single thing""" start="00:13:12.324" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""so that... "gopar". Tada!""" start="00:13:17.507" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""There, awesome.""" start="00:13:19.326" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""But this is going to get very annoying if you're""" start="00:13:20.724" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""simply trying to edit formulas like this, right?""" start="00:13:22.540" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So that's where the nicer debugging,""" start="00:13:25.107" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""nicer editing section comes in.""" start="00:13:27.033" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So, yes, just like as mentioned, table calls""" start="00:13:28.890" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""only the first formula.""" start="00:13:32.300" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So what's the step onto this nicer editing section?""" start="00:13:33.607" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Try out "C-c ," or `org-edit-special'.""" start="00:13:36.449" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So let's go back to the table formula and call it...""" start="00:13:40.524" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""oh my god, look at that,""" start="00:13:44.657" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""a new buffer just for editing,""" start="00:13:47.690" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and each formula is in its own line to make""" start="00:13:49.990" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""it easier, which is beautiful!""" start="00:13:52.699" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So, let's just say I want to do another calculation.""" start="00:13:54.724" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Let's do eight times eight, which should be 64,""" start="00:13:58.815" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and we have no need of putting this flag""" start="00:14:02.707" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""because the flag only affects it on the input coming in.""" start="00:14:04.741" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I should have mentioned that earlier.""" start="00:14:07.540" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Only input coming in.""" start="00:14:09.174" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""There is ways to affect the output,""" start="00:14:10.874" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""which we'll also cover in this topic later on,""" start="00:14:13.274" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""but for now, you can either leave the end flag""" start="00:14:16.574" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""or leave it out. It will still work fine.""" start="00:14:19.231" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Let's just leave it out for now.""" start="00:14:21.991" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Let's just do C-c C-c to make sure""" start="00:14:23.508" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""that everything is working.""" start="00:14:26.625" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""64. Beautiful.""" start="00:14:28.874" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So there you have it. You can have multiple formulas""" start="00:14:30.790" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""just stacked up into one line,""" start="00:14:33.166" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and whenever you need to edit it,""" start="00:14:34.878" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""just go into that into that line""" start="00:14:36.391" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and "C-c ,", and tada!""" start="00:14:38.357" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""You have this ready, good to go, and for editing.""" start="00:14:41.124" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Oh and if you want to exit out,""" start="00:14:44.450" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""also just do "C-c ," again and you're back.""" start="00:14:45.825" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I did not mention that. Sweet!""" start="00:14:49.040" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So now we know how to have""" start="00:14:51.990" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""a better editing experience. Sweet!""" start="00:14:54.775" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""So now comes the formatting section which I talked about.""" start="00:14:57.106" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So what's the first step?""" start="00:15:00.340" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Well for formatting, Org mode uses""" start="00:15:01.974" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""the printf function from C.""" start="00:15:05.508" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So those who are familiar with C,""" start="00:15:08.674" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""you'll feel right at home because the way you format it""" start="00:15:10.375" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""is exactly the same way.""" start="00:15:12.923" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So for example, this will print off""" start="00:15:14.040" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""a floating number with two decimal points.""" start="00:15:16.558" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""As you can see here, this is how you will use it.""" start="00:15:18.973" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""It will be after the semicolon and it will be "%.2f".""" start="00:15:21.640" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So let's go ahead and test that out.""" start="00:15:26.424" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Actually, let's go ahead to our latest function--""" start="00:15:28.158" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I mean, to our latest formula.""" start="00:15:30.690" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Let's go ahead to the nicer buffer""" start="00:15:32.440" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and let's do, Ctrl... Let's enter the semicolon,""" start="00:15:33.841" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and then let's put the percent sign, we do 2f.""" start="00:15:39.208" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Actually, let's make it five""" start="00:15:45.424" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""just to differentiate from the formula, and let's see.""" start="00:15:49.175" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Let's run it, and tada!""" start="00:15:52.690" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So yeah, as you can see, five decimal points.""" start="00:15:57.274" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and if we want zero decimal points, we can also""" start="00:16:00.180" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""just move point zero, and tada!""" start="00:16:01.957" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Just like that.""" start="00:16:05.057" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""We can also just leave it as is how it was before,""" start="00:16:06.224" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""because before, we didn't even actually need it,""" start="00:16:08.874" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""but yeah, just an example.""" start="00:16:10.875" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""And just a reminder, there are""" start="00:16:13.114" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""plenty more ways of formatting,""" start="00:16:15.091" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""just look at the documentation.""" start="00:16:17.358" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""There will be more. Basically every single thing""" start="00:16:19.740" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""that you need, just use the documentation as reference.""" start="00:16:21.725" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Cool! So now we know how to debug,""" start="00:16:25.674" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""how to write formulas""" start="00:16:28.341" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and how to get a better, nicer editing buffer""" start="00:16:29.775" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""for the formula so we don't have to do it all""" start="00:16:32.825" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""in a single line.""" start="00:16:35.125" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""So, what about conditional prompts, like I was""" start="00:16:36.340" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""showing in the first table in the end goal?""" start="00:16:38.757" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Well that's actually pretty simple because we already""" start="00:16:43.490" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""know how to do this.""" start="00:16:47.300" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Yes, if you think about it for a second, if we are""" start="00:16:48.424" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""able to pull lisp s-expressions, then we are able to""" start="00:16:51.233" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""basically do it already. Here's an example.""" start="00:16:54.321" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""We're saying if the second column is empty, is zero--""" start="00:16:56.390" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""so actually, this should be with the N flag""" start="00:17:01.907" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""because we will transform empty values as zero,""" start="00:17:04.620" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and that's how Org mode will read those.""" start="00:17:07.040" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""It's saying if the second flag is zero,""" start="00:17:08.820" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""then I want you to put "Enter the values."""" start="00:17:12.425" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""And if it's not empty, we're going to put""" start="00:17:17.052" video="mainVideo-realestate" id="subtitle"]] +[[!template text=""""Values entered." We're going to recognize.""" start="00:17:20.540" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So let's go ahead and actually do this.""" start="00:17:22.290" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So let's grab this, and let's type it in.""" start="00:17:24.540" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So let's go ahead. "Enter the values," because it""" start="00:17:29.090" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""doesn't have any.""" start="00:17:36.557" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So let's go ahead and say "Hello EmacsConf"""" start="00:17:37.490" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and let's go ahead and run it again.""" start="00:17:42.441" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Since there are values,""" start="00:17:47.324" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""it's going to overwrite what's here and put value entered.""" start="00:17:48.458" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So let's go ahead.""" start="00:17:51.674" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Tada, so there you go.""" start="00:17:53.498" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So that is pretty much how you do conditional props,""" start="00:17:55.790" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""which is pretty straightforward""" start="00:18:00.624" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""once you think about it""" start="00:18:01.941" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""because if you are able to insert Lisp expressions,""" start="00:18:02.725" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""then you are able to just do that check""" start="00:18:05.441" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and do the conditional check yourself.""" start="00:18:08.241" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So, custom formulas.""" start="00:18:11.174" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""Yeah, you'll see what I mean.""" start="00:18:13.640" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""We want to be able to put our own custom functions,""" start="00:18:15.424" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and you probably have an idea how to do this already.""" start="00:18:20.024" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Yes, we also know how to do this already.""" start="00:18:23.990" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Before I continue, I'm going to say that I already""" start="00:18:27.060" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""have some formulas that I use""" start="00:18:30.457" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""which are not part of this talk""" start="00:18:31.941" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""because they're just functions that calculate some stuff.""" start="00:18:33.375" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So for example, they calculate the monthly mortgage,""" start="00:18:37.490" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""the monthly PMI, property tax, homeowners insurance,""" start="00:18:40.090" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""so a bunch of other stuff.""" start="00:18:43.357" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I have these functions already and they are a bit off,""" start="00:18:44.857" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""but for this example, they're doing everything.""" start="00:18:49.829" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""It's close enough, so don't worry too much.""" start="00:18:52.312" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Just an example, you can have your own function""" start="00:18:54.490" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""that does something else like calculate""" start="00:18:56.924" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""a REI B rental or something like that.""" start="00:18:59.313" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So you can do whatever you want.""" start="00:19:01.640" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""As long as you can call via Lisp,""" start="00:19:03.220" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""you can call it in Org mode, in the table formulas.""" start="00:19:04.824" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So let's exit out of there.""" start="00:19:07.900" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Now that we know how to do everything,""" start="00:19:11.437" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""let me go back to the original table and go from there.""" start="00:19:13.808" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Let me close all these out actually.""" start="00:19:21.024" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Now let's go back and revisit this table,""" start="00:19:26.624" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""since we'll be much, much more familiar""" start="00:19:29.624" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""except for one thing, which I will explain.""" start="00:19:31.620" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So we have the constants right there""" start="00:19:35.518" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and we have the house prices""" start="00:19:38.041" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and we have everything just like I mentioned before.""" start="00:19:39.691" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""The main part that we want to look at""" start="00:19:42.500" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""is the table formula.""" start="00:19:44.123" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So let's open up our special editing buffer,""" start="00:19:45.124" video="mainVideo-realestate" id="subtitle"]] +[[!template text=""""C-c ,",""" start="00:19:47.574" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and as you can see, I have some right here.""" start="00:19:49.774" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So, the fifth column I'm saying,""" start="00:19:52.490" video="mainVideo-realestate" id="subtitle"]] +[[!template text=""""Hey, we're gonna call this function""" start="00:19:53.624" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""rei-calculate-down-payment, and I'm gonna""" start="00:19:55.924" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""pass in the third column and fourth column""" start="00:19:58.657" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and I'm going to pass in t." (true)""" start="00:20:00.758" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I believe this is just to normalize,""" start="00:20:02.340" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""to convert to the proper decimal place,""" start="00:20:07.174" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""so let's not worry too much about that.""" start="00:20:12.157" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Then for the sixth column, we're going to say""" start="00:20:14.179" video="mainVideo-realestate" id="subtitle"]] +[[!template text=""""I calculate the monthly mortgage."""" start="00:20:16.790" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""We're going to pass in the third column""" start="00:20:18.145" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""the INTEREST_RATE, which we have""" start="00:20:20.224" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""defined over here in the constants.""" start="00:20:21.439" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""The 30, I believe this is for 30 years,""" start="00:20:22.980" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""PMI, the PROPERTY_TAX and HOME_INSURANCE,""" start="00:20:26.374" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and then the fourth column.""" start="00:20:29.423" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Then everything is going to be accepted as numbers,""" start="00:20:30.874" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and we're going to have two decimals""" start="00:20:33.924" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""at the end of the place.""" start="00:20:35.174" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So, what else?""" start="00:20:36.274" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Over here is where we have our conditionals.""" start="00:20:37.607" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""We're saying, "hey, if the seventh column is 0,""" start="00:20:40.174" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""press 'Enter Tenant Income'."""" start="00:20:42.374" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Over here as well, if the seventh column is zero,""" start="00:20:44.402" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""we're going to press 'Enter Tenant Income'""" start="00:20:48.507" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and for this one we're going to say,""" start="00:20:51.824" video="mainVideo-realestate" id="subtitle"]] +[[!template text=""""Hey, we're going to normalize the price."""" start="00:20:53.705" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I believe this is a 1% rule.""" start="00:20:56.040" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""This could have been extracted into a function,""" start="00:20:59.340" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""but I just did the calculation right here.""" start="00:21:01.490" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""This, I believe, is the ROI, 12 months.""" start="00:21:04.239" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""This is just calculating the cash flow.""" start="00:21:07.990" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""This is a very rudimentary function or formula.""" start="00:21:11.107" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Do not use this because there is way more""" start="00:21:15.407" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""to go into calculating the cash flow""" start="00:21:16.733" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and also, it differs from person to person.""" start="00:21:18.841" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Some people are more conservative,""" start="00:21:21.599" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""other people are way more liberal, so it just""" start="00:21:23.874" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""depends how you want to calculate it.""" start="00:21:26.960" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""As you can see, we have the N flag for numeric number""" start="00:21:28.974" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and then we're saying we're formatting""" start="00:21:34.241" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""to one decimal place.""" start="00:21:36.190" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""The %% sign is just to input a percent sign as itself.""" start="00:21:37.794" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Otherwise, Org mode is going to think""" start="00:21:43.208" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""it's some type of a formatter, which it's not.""" start="00:21:45.420" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""If you do... As I mentioned,""" start="00:21:48.040" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""if you've used the printf function in C or C++,""" start="00:21:49.240" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""then you probably know how to use it.""" start="00:21:51.790" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Okay, so this is pretty much everything in a nutshell.""" start="00:21:55.607" video="mainVideo-realestate" id="subtitle"]] +[[!template new="1" text="""So, one thing that I do want to say""" start="00:22:01.924" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""is the last section,""" start="00:22:05.070" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""which is automatically updating,""" start="00:22:06.479" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""which is the part that blew my mind""" start="00:22:07.874" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""when I realized that Org Mode can do this.""" start="00:22:10.175" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So how do we do it?""" start="00:22:11.557" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Well, you probably guessed just from looking at""" start="00:22:12.577" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""at the first table that we have right now.""" start="00:22:14.660" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""We add a column at the beginning""" start="00:22:18.424" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""of the table with a percent (%)--""" start="00:22:20.874" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I'm sorry, with the pound sign (#)""" start="00:22:22.957" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""or hashtag as the younger kids call it.""" start="00:22:24.957" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So this is what we do.""" start="00:22:28.557" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""We added a column at the beginning of the""" start="00:22:31.145" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""table, we do pound sign (#).""" start="00:22:32.820" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So this is what it's for.""" start="00:22:35.084" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""This lets Org mode know that "hey,""" start="00:22:35.890" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I want the values, the table formulas,""" start="00:22:38.840" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""to automatically run on each tab change."""" start="00:22:41.240" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Now I believe that you can make it so that""" start="00:22:44.057" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""it changes, so that it updates on every keystroke.""" start="00:22:46.340" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I think that's too much.""" start="00:22:49.223" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""And then you can also make it so that""" start="00:22:51.124" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""only certain rows update or certain columns.""" start="00:22:53.107" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""There's a plethora of things that you can do.""" start="00:22:56.020" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""You should definitely read up on the documentation,""" start="00:22:58.319" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""because you will probably make a way better talk,""" start="00:23:01.024" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""a way more advanced talk than I on this one,""" start="00:23:03.525" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""so I'm looking forward for that.""" start="00:23:07.074" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""But this is essentially how you build""" start="00:23:09.674" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""a Org mode table formula that will help you know""" start="00:23:12.460" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""if a property is correct.""" start="00:23:15.508" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So, let's go ahead and as a final out to this demo,""" start="00:23:17.225" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""let's go ahead and enter a new column.""" start="00:23:22.440" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Org-mode automatically puts the pound sign (#),""" start="00:23:25.420" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""which is awesome, and let's just say 'Emacs House',""" start="00:23:30.274" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and let's say it is 100k.""" start="00:23:35.540" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So 100k, and as you can see it's already trying to""" start="00:23:39.690" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""calculate the monthly mortgage,""" start="00:23:44.340" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""but we'll see about that,""" start="00:23:46.140" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and let's just put 10% down.""" start="00:23:47.190" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So 10% of 100k should be 10,000.""" start="00:23:49.880" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So 10,000, correct, and the monthly mortgage is that""" start="00:23:53.157" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""and let's just say the tenant income is,""" start="00:23:56.408" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""as you can see right here,""" start="00:24:00.190" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""tenant income is, let's say 1500.""" start="00:24:01.757" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Is it passing the 1% rule?""" start="00:24:05.974" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""Yep! What's my ROI?""" start="00:24:07.374" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""118%, which is kind of cool actually.""" start="00:24:09.524" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""That's a nice deal.""" start="00:24:13.880" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""So this is a rudimentary way of""" start="00:24:14.907" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""calculating deals in Org mode.""" start="00:24:17.757" video="mainVideo-realestate" id="subtitle"]] +[[!template text="""I hope you found it interesting, and yeah, that is it.""" start="00:24:20.419" video="mainVideo-realestate" id="subtitle"]] + +Captioner: tom Questions or comments? Please e-mail [gopardaniel@gmail.com](mailto:gopardaniel@gmail.com?subject=Comment%20for%20EmacsConf%202022%20realestate%3A%20Real%20estate%20and%20Org%20table%20formulas) diff --git a/2022/info/realestate-before.md b/2022/info/realestate-before.md index f34e45da..b3636f29 100644 --- a/2022/info/realestate-before.md +++ b/2022/info/realestate-before.md @@ -10,8 +10,8 @@ The following image shows where the talk is in the schedule for Sat 2022-12-03. Format: 25-min talk followed by pad Q&A (<a href="https://chat.emacsconf.org/?join=emacsconf,emacsconf-org,emacsconf-accessible,emacsconf-dev,emacsconf-gen">#emacsconf-gen</a>) Etherpad: <https://pad.emacsconf.org/2022-realestate> Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A starting (not yet open for joining) -<div>Times in different timezones:</div><div class="times" start="2022-12-03T19:15:00Z" end="2022-12-03T19:40:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~2:15 PM - 2:40 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~1:15 PM - 1:40 PM CST (US/Central)<br />Saturday, Dec 3 2022, ~12:15 PM - 12:40 PM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~11:15 AM - 11:40 AM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~7:15 PM - 7:40 PM UTC <br />Saturday, Dec 3 2022, ~8:15 PM - 8:40 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~9:15 PM - 9:40 PM EET (Europe/Athens)<br />Sunday, Dec 4 2022, ~12:45 AM - 1:10 AM IST (Asia/Kolkata)<br />Sunday, Dec 4 2022, ~3:15 AM - 3:40 AM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~4:15 AM - 4:40 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/gen/">Find out how to watch and participate</a></div> +Status: Q&A finished, IRC and pad will be archived on this page + [[!template id="vid" vidid="realestate-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-realestate--real-estate-and-org-table-formulas--daniel-gopar--main.webm" poster="https://media.emacsconf.org/2022/emacsconf-2022-realestate--real-estate-and-org-table-formulas--daniel-gopar--main.png" captions="""<track label="English" kind="captions" srclang="en" src="/2022/captions/emacsconf-2022-realestate--real-estate-and-org-table-formulas--daniel-gopar--main.vtt" default />""" size="52M" duration="24:25" other_resources="""[Download .webm (51MB)](https://media.emacsconf.org/2022/emacsconf-2022-realestate--real-estate-and-org-table-formulas--daniel-gopar.webm) diff --git a/2022/info/rms-before.md b/2022/info/rms-before.md index 5753e99f..d1bdd717 100644 --- a/2022/info/rms-before.md +++ b/2022/info/rms-before.md @@ -3,7 +3,7 @@ For context, we will first play Richard Stallman's 2014 TEDx talk called "Free S The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="rms"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect stroke-width="3" x="211" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect stroke-width="3" x="211" y="75" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/rolodex-before.md b/2022/info/rolodex-before.md index 98a7bd5f..72af51b3 100644 --- a/2022/info/rolodex-before.md +++ b/2022/info/rolodex-before.md @@ -3,7 +3,7 @@ In this talk, Ramin Honary shares how he uses HyRolo to create and navigate link The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="rolodex"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect stroke-width="3" x="86" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect stroke-width="3" x="86" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/sat-close-before.md b/2022/info/sat-close-before.md index 31681a32..ed22a029 100644 --- a/2022/info/sat-close-before.md +++ b/2022/info/sat-close-before.md @@ -1,15 +1,15 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="sat-close"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(578,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect stroke-width="3" x="737" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect stroke-width="3" x="737" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] Format: 5-min talk Etherpad: <https://pad.emacsconf.org/2022-sat-close> Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Now playing on the conference livestream -<div>Times in different timezones:</div><div class="times" start="2022-12-03T21:50:00Z" end="2022-12-03T21:55:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~4:50 PM - 4:55 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~3:50 PM - 3:55 PM CST (US/Central)<br />Saturday, Dec 3 2022, ~2:50 PM - 2:55 PM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~1:50 PM - 1:55 PM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~9:50 PM - 9:55 PM UTC <br />Saturday, Dec 3 2022, ~10:50 PM - 10:55 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~11:50 PM - 11:55 PM EET (Europe/Athens)<br />Sunday, Dec 4 2022, ~3:20 AM - 3:25 AM IST (Asia/Kolkata)<br />Sunday, Dec 4 2022, ~5:50 AM - 5:55 AM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~6:50 AM - 6:55 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/gen/">Find out how to watch and participate</a></div> +Status: Q&A finished, IRC and pad will be archived on this page + The video for "Saturday closing remarks" will be posted here when available. You can also subscribe to the <a href="https://lists.gnu.org/mailman/listinfo/emacsconf-discuss">emacsconf-discuss mailing list</a> for updates. # Description diff --git a/2022/info/sat-open-after.md b/2022/info/sat-open-after.md index 44215b21..83a7d018 100644 --- a/2022/info/sat-open-after.md +++ b/2022/info/sat-open-after.md @@ -79,6 +79,9 @@ [[!template text="""and you'll probably meet us in the closing remarks.""" start="00:03:15.320" video="mainVideo-sat-open" id="subtitle"]] [[!template text="""Let's have fun at EmacsConf 2022!""" start="00:03:18.160" video="mainVideo-sat-open" id="subtitle"]] + + +Captioner: sachac Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202022%20sat-open%3A%20Saturday%20opening%20remarks) diff --git a/2022/info/sat-open-before.md b/2022/info/sat-open-before.md index 0354f579..2c7e6853 100644 --- a/2022/info/sat-open-before.md +++ b/2022/info/sat-open-before.md @@ -1,7 +1,7 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="sat-open"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect stroke-width="3" x="0" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(578,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect stroke-width="3" x="0" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/school-after.md b/2022/info/school-after.md index 0b3dc2a3..758b2bfe 100644 --- a/2022/info/school-after.md +++ b/2022/info/school-after.md @@ -127,6 +127,9 @@ [[!template text="""Thank you for listening to this talk,""" start="00:07:53.760" video="mainVideo-school" id="subtitle"]] [[!template text="""have a nice rest of the day.""" start="00:07:57.440" video="mainVideo-school" id="subtitle"]] + + +Captioner: sachac Questions or comments? Please e-mail [daniel@alves.world](mailto:daniel@alves.world?subject=Comment%20for%20EmacsConf%202022%20school%3A%20Back%20to%20school%20with%20Emacs) diff --git a/2022/info/school-before.md b/2022/info/school-before.md index 13fcf777..8305c5d2 100644 --- a/2022/info/school-before.md +++ b/2022/info/school-before.md @@ -3,7 +3,7 @@ Daniel Rosel demonstrates Lectorg, a package that he wrote to make note taking f The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="school"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect stroke-width="3" x="70" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(578,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect stroke-width="3" x="70" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/science-after.md b/2022/info/science-after.md index d006e22d..ba0702f5 100644 --- a/2022/info/science-after.md +++ b/2022/info/science-after.md @@ -4,392 +4,394 @@ <a name="science-mainVideo-transcript"></a> # Transcript -[[!template new="1" text="Hello everyone, I'm Vidianos." start="00:00:00.000" video="mainVideo-science" id="subtitle"]] -[[!template text="Today I'm going to show you" start="00:00:02.040" video="mainVideo-science" id="subtitle"]] -[[!template text="how I write and organize" start="00:00:03.080" video="mainVideo-science" id="subtitle"]] -[[!template text="my literature notes using Emacs." start="00:00:04.080" video="mainVideo-science" id="subtitle"]] -[[!template text="I take my notes using Zettelkasten," start="00:00:06.440" video="mainVideo-science" id="subtitle"]] -[[!template text="which you may or may not have heard." start="00:00:08.720" video="mainVideo-science" id="subtitle"]] -[[!template text="It is about taking small atomic notes" start="00:00:11.080" video="mainVideo-science" id="subtitle"]] -[[!template text="and linking them one another" start="00:00:13.840" video="mainVideo-science" id="subtitle"]] -[[!template text="to create your so-called second brain." start="00:00:15.000" video="mainVideo-science" id="subtitle"]] -[[!template text="Here is mine." start="00:00:17.600" video="mainVideo-science" id="subtitle"]] -[[!template text="This is a graph of all the notes" start="00:00:19.160" video="mainVideo-science" id="subtitle"]] -[[!template text="I have accumulated the last few years." start="00:00:20.720" video="mainVideo-science" id="subtitle"]] -[[!template text="It has various types of notes," start="00:00:22.880" video="mainVideo-science" id="subtitle"]] -[[!template text="but we're mainly going to focus on" start="00:00:25.200" video="mainVideo-science" id="subtitle"]] -[[!template text="literature notes today." start="00:00:25.960" video="mainVideo-science" id="subtitle"]] -[[!template new="1" text="Here are the contents of my talk." start="00:00:28.320" video="mainVideo-science" id="subtitle"]] -[[!template text="We're going to start" start="00:00:29.640" video="mainVideo-science" id="subtitle"]] -[[!template text="with bibliography management," start="00:00:30.440" video="mainVideo-science" id="subtitle"]] -[[!template text="which is how I take bibliography" start="00:00:31.920" video="mainVideo-science" id="subtitle"]] -[[!template text="from the web and import it to Emacs." start="00:00:33.320" video="mainVideo-science" id="subtitle"]] -[[!template text="Then we're going to talk about" start="00:00:35.960" video="mainVideo-science" id="subtitle"]] -[[!template text="how I create literature notes" start="00:00:37.080" video="mainVideo-science" id="subtitle"]] -[[!template text="using a custom org-roam-bibtex template I have." start="00:00:38.880" video="mainVideo-science" id="subtitle"]] -[[!template text="And after talking about that," start="00:00:42.760" video="mainVideo-science" id="subtitle"]] -[[!template text="we can talk about how I write literature notes," start="00:00:43.920" video="mainVideo-science" id="subtitle"]] -[[!template text="which is through annotating an article" start="00:00:46.360" video="mainVideo-science" id="subtitle"]] -[[!template text="using org-noter. Org-noter is a package" start="00:00:48.240" video="mainVideo-science" id="subtitle"]] -[[!template text="that allows you to annotate PDFs" start="00:00:51.320" video="mainVideo-science" id="subtitle"]] -[[!template text="using the Org format" start="00:00:53.440" video="mainVideo-science" id="subtitle"]] -[[!template text="and creates a supplementary Org file to your PDF." start="00:00:55.000" video="mainVideo-science" id="subtitle"]] -[[!template text="Then we're going to talk about" start="00:00:59.560" video="mainVideo-science" id="subtitle"]] -[[!template text="adding the literature to your Zettelkasten," start="00:01:00.880" video="mainVideo-science" id="subtitle"]] -[[!template text="which is a simple but important topic," start="00:01:03.520" video="mainVideo-science" id="subtitle"]] -[[!template text="and how you can write permanent notes" start="00:01:06.280" video="mainVideo-science" id="subtitle"]] -[[!template text="based on the info you obtain from this literature." start="00:01:08.600" video="mainVideo-science" id="subtitle"]] -[[!template text="Lastly, we're going to focus on" start="00:01:11.720" video="mainVideo-science" id="subtitle"]] -[[!template text="the organization problem" start="00:01:13.320" video="mainVideo-science" id="subtitle"]] -[[!template text="one might find when having a lot of literature" start="00:01:15.000" video="mainVideo-science" id="subtitle"]] -[[!template text="for an assignment or an article or something," start="00:01:17.720" video="mainVideo-science" id="subtitle"]] -[[!template text="and how I have tried to solve this" start="00:01:21.440" video="mainVideo-science" id="subtitle"]] -[[!template text="with my package Zetteldesk." start="00:01:22.960" video="mainVideo-science" id="subtitle"]] -[[!template text="This isn't the perfect solution," start="00:01:24.840" video="mainVideo-science" id="subtitle"]] -[[!template text="but it is what I have, and I really like it." start="00:01:26.360" video="mainVideo-science" id="subtitle"]] -[[!template text="Finally, we're going to talk about" start="00:01:29.800" video="mainVideo-science" id="subtitle"]] -[[!template text="how to compose the final article" start="00:01:30.840" video="mainVideo-science" id="subtitle"]] -[[!template text="that you want to produce" start="00:01:33.560" video="mainVideo-science" id="subtitle"]] -[[!template text="using this literature" start="00:01:35.200" video="mainVideo-science" id="subtitle"]] -[[!template text="with the technique described" start="00:01:36.800" video="mainVideo-science" id="subtitle"]] -[[!template text="in the rest of this talk." start="00:01:38.640" video="mainVideo-science" id="subtitle"]] -[[!template new="1" text="So let's begin the talk" start="00:01:40.560" video="mainVideo-science" id="subtitle"]] -[[!template text="with bibliography management." start="00:01:42.240" video="mainVideo-science" id="subtitle"]] -[[!template text="Zotero is the bibliography manager I use." start="00:01:44.240" video="mainVideo-science" id="subtitle"]] -[[!template text="It is very simple to store articles with it," start="00:01:47.240" video="mainVideo-science" id="subtitle"]] -[[!template text="and it exports to .bib," start="00:01:49.400" video="mainVideo-science" id="subtitle"]] -[[!template text="integrating with packages" start="00:01:50.680" video="mainVideo-science" id="subtitle"]] -[[!template text="such as org-roam-bibtex and ivy-bibtex." start="00:01:52.080" video="mainVideo-science" id="subtitle"]] -[[!template text="When researching, I typically find" start="00:01:54.960" video="mainVideo-science" id="subtitle"]] -[[!template text="a long list of articles from a search engine." start="00:01:56.680" video="mainVideo-science" id="subtitle"]] -[[!template text="I open the titles which have interesting titles" start="00:02:00.040" video="mainVideo-science" id="subtitle"]] -[[!template text="through their abstracts" start="00:02:03.440" video="mainVideo-science" id="subtitle"]] -[[!template text="and save to Zotero those whose abstracts" start="00:02:05.040" video="mainVideo-science" id="subtitle"]] -[[!template text="are the most relevant to what I want." start="00:02:07.800" video="mainVideo-science" id="subtitle"]] -[[!template text="From these articles," start="00:02:10.320" video="mainVideo-science" id="subtitle"]] -[[!template text="I typically won't read all of them" start="00:02:11.800" video="mainVideo-science" id="subtitle"]] -[[!template text="because they're a lot," start="00:02:13.360" video="mainVideo-science" id="subtitle"]] -[[!template text="but I will select a few," start="00:02:14.520" video="mainVideo-science" id="subtitle"]] -[[!template text="once I have collected as many as I want." start="00:02:17.760" video="mainVideo-science" id="subtitle"]] -[[!template text="Zotero acts as a way to store everything" start="00:02:21.640" video="mainVideo-science" id="subtitle"]] -[[!template text="that might be interesting," start="00:02:24.080" video="mainVideo-science" id="subtitle"]] -[[!template text="while Emacs and my Zettelkasten" start="00:02:25.480" video="mainVideo-science" id="subtitle"]] -[[!template text="stores everything that is definitely interesting," start="00:02:28.520" video="mainVideo-science" id="subtitle"]] -[[!template text="and I have read it already." start="00:02:30.960" video="mainVideo-science" id="subtitle"]] -[[!template new="1" text="And then we can move to" start="00:02:35.200" video="mainVideo-science" id="subtitle"]] -[[!template text="how I create literature notes." start="00:02:36.360" video="mainVideo-science" id="subtitle"]] -[[!template text="I set the default action of ivy-bibtex" start="00:02:38.560" video="mainVideo-science" id="subtitle"]] -[[!template text="to ivy-bibtex-edit-notes," start="00:02:41.120" video="mainVideo-science" id="subtitle"]] -[[!template text="which will prompt-- which" start="00:02:43.600" video="mainVideo-science" id="subtitle"]] -[[!template text="with org-roam-bibtex-mode active," start="00:02:44.920" video="mainVideo-science" id="subtitle"]] -[[!template text="prompts you for an org-capture template" start="00:02:46.480" video="mainVideo-science" id="subtitle"]] -[[!template text="when selecting something" start="00:02:48.840" video="mainVideo-science" id="subtitle"]] -[[!template text="if the node doesn't exist," start="00:02:50.800" video="mainVideo-science" id="subtitle"]] -[[!template text="or takes you to the existing node." start="00:02:52.320" video="mainVideo-science" id="subtitle"]] -[[!template text="And obviously you need to have this here," start="00:02:54.960" video="mainVideo-science" id="subtitle"]] -[[!template text="to set the default action" start="00:02:58.440" video="mainVideo-science" id="subtitle"]] -[[!template text="that was already there" start="00:03:00.800" video="mainVideo-science" id="subtitle"]] -[[!template text="to a letter." start="00:03:02.600" video="mainVideo-science" id="subtitle"]] -[[!template new="1" text="Then we can move to my org-roam reference template," start="00:03:04.960" video="mainVideo-science" id="subtitle"]] -[[!template text="using org-roam-bibtex." start="00:03:08.040" video="mainVideo-science" id="subtitle"]] -[[!template text="This isn't so complicated," start="00:03:11.160" video="mainVideo-science" id="subtitle"]] -[[!template text="but it has some important stuff" start="00:03:12.440" video="mainVideo-science" id="subtitle"]] -[[!template text="I want to highlight." start="00:03:14.120" video="mainVideo-science" id="subtitle"]] -[[!template text="Save it to the ref directory," start="00:03:14.880" video="mainVideo-science" id="subtitle"]] -[[!template text="so I can remember where it is," start="00:03:17.400" video="mainVideo-science" id="subtitle"]] -[[!template text="and it's classified as a literature note." start="00:03:19.720" video="mainVideo-science" id="subtitle"]] -[[!template text="The file name is the cite key," start="00:03:23.560" video="mainVideo-science" id="subtitle"]] -[[!template text="which is easy and small," start="00:03:25.120" video="mainVideo-science" id="subtitle"]] -[[!template text="but the title is the actual article's title." start="00:03:27.760" video="mainVideo-science" id="subtitle"]] -[[!template text="Give it a tag of the entry-type;" start="00:03:30.080" video="mainVideo-science" id="subtitle"]] -[[!template text="this is typically "article,"" start="00:03:32.320" video="mainVideo-science" id="subtitle"]] -[[!template text="but it's easy to sort things this way" start="00:03:35.040" video="mainVideo-science" id="subtitle"]] -[[!template text="because not all literature notes are articles." start="00:03:37.480" video="mainVideo-science" id="subtitle"]] -[[!template text="And then give the keywords" start="00:03:41.400" video="mainVideo-science" id="subtitle"]] -[[!template text="that are given by Zotero, because why not?" start="00:03:43.160" video="mainVideo-science" id="subtitle"]] -[[!template text="Tags here are tags from Zettelkasten." start="00:03:47.360" video="mainVideo-science" id="subtitle"]] -[[!template text="These are the links to" start="00:03:51.480" video="mainVideo-science" id="subtitle"]] -[[!template text="other files which are relevant," start="00:03:53.640" video="mainVideo-science" id="subtitle"]] -[[!template text="but its initialization is empty, obviously." start="00:03:55.360" video="mainVideo-science" id="subtitle"]] -[[!template text="And then this heading is where" start="00:03:58.080" video="mainVideo-science" id="subtitle"]] -[[!template text="all the magic happens." start="00:03:59.840" video="mainVideo-science" id="subtitle"]] -[[!template text="The name is just not really so relevant;" start="00:04:00.840" video="mainVideo-science" id="subtitle"]] -[[!template text="I just needed something that made sense." start="00:04:04.720" video="mainVideo-science" id="subtitle"]] -[[!template text="The properties are what matters," start="00:04:07.560" video="mainVideo-science" id="subtitle"]] -[[!template text="and mainly this one here." start="00:04:10.400" video="mainVideo-science" id="subtitle"]] -[[!template text="The ${file} attribute finds" start="00:04:12.240" video="mainVideo-science" id="subtitle"]] -[[!template text="the file of this specific literature" start="00:04:18.880" video="mainVideo-science" id="subtitle"]] -[[!template text="and makes sure that org-noter works" start="00:04:24.800" video="mainVideo-science" id="subtitle"]] -[[!template text="by default here." start="00:04:27.520" video="mainVideo-science" id="subtitle"]] -[[!template text="As I'm going to show you in a moment," start="00:04:29.640" video="mainVideo-science" id="subtitle"]] -[[!template text="this way [of] initializing the literature note," start="00:04:32.560" video="mainVideo-science" id="subtitle"]] -[[!template text="org-noter works by default." start="00:04:34.600" video="mainVideo-science" id="subtitle"]] -[[!template text="That's all, basically, for the template." start="00:04:37.000" video="mainVideo-science" id="subtitle"]] -[[!template new="1" text="This is the point of the talk" start="00:04:40.160" video="mainVideo-science" id="subtitle"]] -[[!template text="where we reach the first demo." start="00:04:42.760" video="mainVideo-science" id="subtitle"]] -[[!template text="This is about opening ivy-bibtex," start="00:04:44.040" video="mainVideo-science" id="subtitle"]] -[[!template text="selecting an article I want to annotate," start="00:04:47.080" video="mainVideo-science" id="subtitle"]] -[[!template text="initializing the literature note." start="00:04:50.240" video="mainVideo-science" id="subtitle"]] -[[!template text="We can see that everything" start="00:04:53.000" video="mainVideo-science" id="subtitle"]] -[[!template text="is inserted in for me," start="00:04:55.000" video="mainVideo-science" id="subtitle"]] -[[!template text="and if I open org-noter on this heading," start="00:04:56.480" video="mainVideo-science" id="subtitle"]] -[[!template text="it opens the article, as expected." start="00:05:01.080" video="mainVideo-science" id="subtitle"]] -[[!template text="I can read the article," start="00:05:03.760" video="mainVideo-science" id="subtitle"]] -[[!template text="I can say I want to" start="00:05:06.200" video="mainVideo-science" id="subtitle"]] -[[!template text="annotate something here." start="00:05:08.440" video="mainVideo-science" id="subtitle"]] -[[!template text="Obviously, annotation is not that simple as here," start="00:05:20.720" video="mainVideo-science" id="subtitle"]] -[[!template text="but I don't really have the time" start="00:05:24.120" video="mainVideo-science" id="subtitle"]] -[[!template text="to actually annotate an article live." start="00:05:26.480" video="mainVideo-science" id="subtitle"]] -[[!template text="But you can keep going, and it's a good setup." start="00:05:28.600" video="mainVideo-science" id="subtitle"]] -[[!template text="Then close org-noter," start="00:05:34.040" video="mainVideo-science" id="subtitle"]] -[[!template text="and let's go presentation again." start="00:05:39.880" video="mainVideo-science" id="subtitle"]] -[[!template new="1" text="Moving on, this section is some stuff" start="00:05:40.840" video="mainVideo-science" id="subtitle"]] -[[!template text="about my annotation process." start="00:05:44.360" video="mainVideo-science" id="subtitle"]] -[[!template text="As I said, there is not enough time for me" start="00:05:45.800" video="mainVideo-science" id="subtitle"]] -[[!template text="to actually annotate an article live," start="00:05:49.480" video="mainVideo-science" id="subtitle"]] -[[!template text="but here are some things about it." start="00:05:51.120" video="mainVideo-science" id="subtitle"]] -[[!template text="First, is that I annotate with org-noter," start="00:05:53.000" video="mainVideo-science" id="subtitle"]] -[[!template text="which I absolutely love." start="00:05:55.480" video="mainVideo-science" id="subtitle"]] -[[!template text="It is great for annotations" start="00:05:56.720" video="mainVideo-science" id="subtitle"]] -[[!template text="because you do them in org," start="00:05:59.600" video="mainVideo-science" id="subtitle"]] -[[!template text="which is an amazing format" start="00:06:02.520" video="mainVideo-science" id="subtitle"]] -[[!template text="and gives you a lot of flexibility," start="00:06:03.880" video="mainVideo-science" id="subtitle"]] -[[!template text="such as adding to the Zettelkasten," start="00:06:05.880" video="mainVideo-science" id="subtitle"]] -[[!template text="being initialized by a capture template," start="00:06:07.840" video="mainVideo-science" id="subtitle"]] -[[!template text="and other things." start="00:06:11.320" video="mainVideo-science" id="subtitle"]] -[[!template text="But also, you don't need to look for" start="00:06:13.120" video="mainVideo-science" id="subtitle"]] -[[!template text="the notes inside the PDF," start="00:06:15.960" video="mainVideo-science" id="subtitle"]] -[[!template text="which is a problem you can have" start="00:06:17.360" video="mainVideo-science" id="subtitle"]] -[[!template text="if you annotate on the PDF," start="00:06:19.520" video="mainVideo-science" id="subtitle"]] -[[!template text="and it is very annoying in my opinion." start="00:06:20.960" video="mainVideo-science" id="subtitle"]] -[[!template text="So I prefer having these notes," start="00:06:23.080" video="mainVideo-science" id="subtitle"]] -[[!template text="and I can only focus on them," start="00:06:26.440" video="mainVideo-science" id="subtitle"]] -[[!template text="but I can also see where they refer." start="00:06:27.880" video="mainVideo-science" id="subtitle"]] -[[!template text="The other scenarios are not so good." start="00:06:29.760" video="mainVideo-science" id="subtitle"]] -[[!template text="Annotating on the PDF," start="00:06:33.200" video="mainVideo-science" id="subtitle"]] -[[!template text="you search for it," start="00:06:35.520" video="mainVideo-science" id="subtitle"]] -[[!template text="and if you don't know which section it refers to," start="00:06:36.480" video="mainVideo-science" id="subtitle"]] -[[!template text="then you need to look about it," start="00:06:41.200" video="mainVideo-science" id="subtitle"]] -[[!template text="and that is very tiring." start="00:06:42.760" video="mainVideo-science" id="subtitle"]] -[[!template new="1" text="Also, I am always annotating in English." start="00:06:44.240" video="mainVideo-science" id="subtitle"]] -[[!template text="This is not my mother tongue," start="00:06:48.360" video="mainVideo-science" id="subtitle"]] -[[!template text="but it helps me avoid" start="00:06:50.200" video="mainVideo-science" id="subtitle"]] -[[!template text="the necessary mental overhead" start="00:06:52.040" video="mainVideo-science" id="subtitle"]] -[[!template text="of translating while reading." start="00:06:53.680" video="mainVideo-science" id="subtitle"]] -[[!template text="I want to pay attention to what I read" start="00:06:55.200" video="mainVideo-science" id="subtitle"]] -[[!template text="and not to translate stuff." start="00:06:57.560" video="mainVideo-science" id="subtitle"]] -[[!template text="I will translate later." start="00:06:59.680" video="mainVideo-science" id="subtitle"]] -[[!template new="1" text="And when finishing an article," start="00:07:02.120" video="mainVideo-science" id="subtitle"]] -[[!template text="I write a mini-abstract myself," start="00:07:05.040" video="mainVideo-science" id="subtitle"]] -[[!template text="which contains what I think about the article." start="00:07:07.720" video="mainVideo-science" id="subtitle"]] -[[!template text="It doesn't need to be much," start="00:07:10.120" video="mainVideo-science" id="subtitle"]] -[[!template text="it's usually like 3 or 4 paragraphs," start="00:07:11.640" video="mainVideo-science" id="subtitle"]] -[[!template text="and it shows things that are useful in the article," start="00:07:14.000" video="mainVideo-science" id="subtitle"]] -[[!template text="and what is mentioned that matters to me." start="00:07:18.320" video="mainVideo-science" id="subtitle"]] -[[!template text="So I can look back at it," start="00:07:21.160" video="mainVideo-science" id="subtitle"]] -[[!template text="and it is very easy for me to find" start="00:07:22.600" video="mainVideo-science" id="subtitle"]] -[[!template text="what I got from this article," start="00:07:24.920" video="mainVideo-science" id="subtitle"]] -[[!template text="so where I will cite it on my actual project." start="00:07:26.600" video="mainVideo-science" id="subtitle"]] -[[!template new="1" text="Then last thing you need to do" start="00:07:30.200" video="mainVideo-science" id="subtitle"]] -[[!template text="is add a note to your Zettelkasten." start="00:07:33.880" video="mainVideo-science" id="subtitle"]] -[[!template text="This is very easy due to it being in an org format." start="00:07:35.480" video="mainVideo-science" id="subtitle"]] -[[!template text="You can just have it in the org-roam directory," start="00:07:38.040" video="mainVideo-science" id="subtitle"]] -[[!template text="which it automatically goes to," start="00:07:41.800" video="mainVideo-science" id="subtitle"]] -[[!template text="and link it to other relevant notes," start="00:07:43.640" video="mainVideo-science" id="subtitle"]] -[[!template text="which is its index" start="00:07:46.560" video="mainVideo-science" id="subtitle"]] -[[!template text="because everything in my Zettelkasten" start="00:07:48.520" video="mainVideo-science" id="subtitle"]] -[[!template text="(at least) has an index," start="00:07:50.560" video="mainVideo-science" id="subtitle"]] -[[!template text="but also every other permanent note" start="00:07:51.720" video="mainVideo-science" id="subtitle"]] -[[!template text="whose contents are in one way or another" start="00:07:54.520" video="mainVideo-science" id="subtitle"]] -[[!template text="mentioned inside the article." start="00:07:56.760" video="mainVideo-science" id="subtitle"]] -[[!template text="This way the article is in a network with notes" start="00:07:58.080" video="mainVideo-science" id="subtitle"]] -[[!template text="that are similar to it." start="00:08:00.360" video="mainVideo-science" id="subtitle"]] -[[!template text="Then we move on to the second demo," start="00:08:02.040" video="mainVideo-science" id="subtitle"]] -[[!template text="which is about a full-fledged literature note." start="00:08:05.360" video="mainVideo-science" id="subtitle"]] -[[!template text="We can go on org-roam-node-find," start="00:08:08.040" video="mainVideo-science" id="subtitle"]] -[[!template text="search for references," start="00:08:11.120" video="mainVideo-science" id="subtitle"]] -[[!template text="go to this, and you can see" start="00:08:13.160" video="mainVideo-science" id="subtitle"]] -[[!template text="it is linked to other notes." start="00:08:15.560" video="mainVideo-science" id="subtitle"]] -[[!template text="And here is the mini-abstract," start="00:08:17.760" video="mainVideo-science" id="subtitle"]] -[[!template text="and here are my notes on it." start="00:08:20.040" video="mainVideo-science" id="subtitle"]] -[[!template new="1" text="The last thing you need to do" start="00:08:21.480" video="mainVideo-science" id="subtitle"]] -[[!template text="when creating a literature note," start="00:08:27.520" video="mainVideo-science" id="subtitle"]] -[[!template text="is obviously create permanent notes" start="00:08:29.120" video="mainVideo-science" id="subtitle"]] -[[!template text="based on what you read." start="00:08:31.320" video="mainVideo-science" id="subtitle"]] -[[!template text="If you never create these literature notes," start="00:08:32.280" video="mainVideo-science" id="subtitle"]] -[[!template text="you will never get new information." start="00:08:35.680" video="mainVideo-science" id="subtitle"]] -[[!template text="So for your Zettelkasten to grow," start="00:08:37.680" video="mainVideo-science" id="subtitle"]] -[[!template text="you need to create such notes." start="00:08:40.440" video="mainVideo-science" id="subtitle"]] -[[!template text="This means that the subject you are researching" start="00:08:42.360" video="mainVideo-science" id="subtitle"]] -[[!template text="is not just literature notes" start="00:08:45.880" video="mainVideo-science" id="subtitle"]] -[[!template text="but has well-structured permanent notes," start="00:08:47.800" video="mainVideo-science" id="subtitle"]] -[[!template text="which is what you will actually read." start="00:08:50.280" video="mainVideo-science" id="subtitle"]] -[[!template text="You typically only read literature notes" start="00:08:52.800" video="mainVideo-science" id="subtitle"]] -[[!template text="to see what gets cited where." start="00:08:55.160" video="mainVideo-science" id="subtitle"]] -[[!template text="What you will mostly read" start="00:08:57.160" video="mainVideo-science" id="subtitle"]] -[[!template text="is these permanent notes" start="00:08:58.760" video="mainVideo-science" id="subtitle"]] -[[!template text="that you create from this knowledge." start="00:08:59.840" video="mainVideo-science" id="subtitle"]] -[[!template new="1" text="So finally we are at the last part of the talk," start="00:09:01.680" video="mainVideo-science" id="subtitle"]] -[[!template text="which is about organizing literature notes." start="00:09:05.240" video="mainVideo-science" id="subtitle"]] -[[!template text="And this is in my opinion" start="00:09:07.360" video="mainVideo-science" id="subtitle"]] -[[!template text="the most interesting part" start="00:09:09.560" video="mainVideo-science" id="subtitle"]] -[[!template text="because it is very unique." start="00:09:10.880" video="mainVideo-science" id="subtitle"]] -[[!template text="It uses a package I wrote myself," start="00:09:12.200" video="mainVideo-science" id="subtitle"]] -[[!template text="and it doesn't have as much usage" start="00:09:14.720" video="mainVideo-science" id="subtitle"]] -[[!template text="as the rest of the things I described so far." start="00:09:18.320" video="mainVideo-science" id="subtitle"]] -[[!template new="1" text="So what is the problem you might find?" start="00:09:21.520" video="mainVideo-science" id="subtitle"]] -[[!template text="Indeed, if you read a lot of things," start="00:09:24.800" video="mainVideo-science" id="subtitle"]] -[[!template text="you have a large collection of notes," start="00:09:27.960" video="mainVideo-science" id="subtitle"]] -[[!template text="and it's not the only thing you will think about." start="00:09:30.960" video="mainVideo-science" id="subtitle"]] -[[!template text="However, you do need to" start="00:09:33.920" video="mainVideo-science" id="subtitle"]] -[[!template text="justify everything with citations," start="00:09:36.080" video="mainVideo-science" id="subtitle"]] -[[!template text="so you need to remember everything" start="00:09:37.800" video="mainVideo-science" id="subtitle"]] -[[!template text="you read in these notes." start="00:09:39.880" video="mainVideo-science" id="subtitle"]] -[[!template text="You have done a lot of work," start="00:09:41.120" video="mainVideo-science" id="subtitle"]] -[[!template text="but there is still a lot for you" start="00:09:43.520" video="mainVideo-science" id="subtitle"]] -[[!template text="to reach your final manuscript." start="00:09:45.920" video="mainVideo-science" id="subtitle"]] -[[!template text="Except if there was a handy little way" start="00:09:47.320" video="mainVideo-science" id="subtitle"]] -[[!template text="to combine everything" start="00:09:50.360" video="mainVideo-science" id="subtitle"]] -[[!template text="and sort it in a very easy way." start="00:09:52.880" video="mainVideo-science" id="subtitle"]] -[[!template text="Well, there is," start="00:09:55.880" video="mainVideo-science" id="subtitle"]] -[[!template text="and I think it came out pretty well." start="00:09:56.960" video="mainVideo-science" id="subtitle"]] -[[!template text="It's zetteldesk.el." start="00:10:00.120" video="mainVideo-science" id="subtitle"]] -[[!template text="It was inspired by this quote here" start="00:10:01.800" video="mainVideo-science" id="subtitle"]] -[[!template text="from How to Take Smart Notes." start="00:10:05.040" video="mainVideo-science" id="subtitle"]] -[[!template text="Sönke Ahrens here talked about a desktop," start="00:10:06.480" video="mainVideo-science" id="subtitle"]] -[[!template text="which you have all the literature" start="00:10:09.800" video="mainVideo-science" id="subtitle"]] -[[!template text="you want in that desktop," start="00:10:13.080" video="mainVideo-science" id="subtitle"]] -[[!template text="and you try to bring it in order." start="00:10:16.240" video="mainVideo-science" id="subtitle"]] -[[!template text="And by doing that," start="00:10:20.080" video="mainVideo-science" id="subtitle"]] -[[!template text="you can improve your ideas" start="00:10:22.600" video="mainVideo-science" id="subtitle"]] -[[!template text="and have a structure" start="00:10:24.840" video="mainVideo-science" id="subtitle"]] -[[!template text="so that your manuscript will then be" start="00:10:27.520" video="mainVideo-science" id="subtitle"]] -[[!template text="very, very easy to write." start="00:10:30.920" video="mainVideo-science" id="subtitle"]] -[[!template text="And as I say here, in trying to do this," start="00:10:33.880" video="mainVideo-science" id="subtitle"]] -[[!template text="I made something much more general" start="00:10:36.280" video="mainVideo-science" id="subtitle"]] -[[!template text="than it needed to be, so yeah," start="00:10:38.920" video="mainVideo-science" id="subtitle"]] -[[!template text="you can use it for many other things." start="00:10:41.560" video="mainVideo-science" id="subtitle"]] -[[!template new="1" text="But before I show you some things about it," start="00:10:43.600" video="mainVideo-science" id="subtitle"]] -[[!template text="I want to introduce you to what a desktop is." start="00:10:46.960" video="mainVideo-science" id="subtitle"]] -[[!template text="It's essentially a collection of the knowledge" start="00:10:49.880" video="mainVideo-science" id="subtitle"]] -[[!template text="you want to be able to see." start="00:10:53.160" video="mainVideo-science" id="subtitle"]] -[[!template text="You add things to your Zetteldesk," start="00:10:54.840" video="mainVideo-science" id="subtitle"]] -[[!template text="and using filter functions," start="00:10:58.000" video="mainVideo-science" id="subtitle"]] -[[!template text="you only see these notes and nothing else," start="00:11:01.680" video="mainVideo-science" id="subtitle"]] -[[!template text="which in my opinion is very handy." start="00:11:04.920" video="mainVideo-science" id="subtitle"]] -[[!template text="So having said that," start="00:11:07.360" video="mainVideo-science" id="subtitle"]] -[[!template text="we can see these things in action" start="00:11:10.320" video="mainVideo-science" id="subtitle"]] -[[!template text="for the final demo of the talk." start="00:11:12.480" video="mainVideo-science" id="subtitle"]] -[[!template text="This is the third one." start="00:11:14.400" video="mainVideo-science" id="subtitle"]] -[[!template text="I will go to an index file of mine." start="00:11:15.840" video="mainVideo-science" id="subtitle"]] -[[!template text="This is 3D printing," start="00:11:20.880" video="mainVideo-science" id="subtitle"]] -[[!template text="an assignment I had last semester." start="00:11:21.960" video="mainVideo-science" id="subtitle"]] -[[!template text="And this has 28 backlinks," start="00:11:23.480" video="mainVideo-science" id="subtitle"]] -[[!template text="so a lot of things that I looked at" start="00:11:27.040" video="mainVideo-science" id="subtitle"]] -[[!template text="for this assignment." start="00:11:30.400" video="mainVideo-science" id="subtitle"]] -[[!template text="I can say I want to add" start="00:11:31.800" video="mainVideo-science" id="subtitle"]] -[[!template text="the current note's backlinks to the Zetteldesk," start="00:11:33.520" video="mainVideo-science" id="subtitle"]] -[[!template text="and now I have a filtered version" start="00:11:35.800" video="mainVideo-science" id="subtitle"]] -[[!template text="of org-roam-node-find defined," start="00:11:38.240" video="mainVideo-science" id="subtitle"]] -[[!template text="which only lists these 29 notes." start="00:11:40.120" video="mainVideo-science" id="subtitle"]] -[[!template text="Very nice, right?" start="00:11:42.000" video="mainVideo-science" id="subtitle"]] -[[!template new="1" text="I can also filter just the literature notes," start="00:11:45.040" video="mainVideo-science" id="subtitle"]] -[[!template text="which can also use other UIs beside org-roam," start="00:11:49.160" video="mainVideo-science" id="subtitle"]] -[[!template text="such as, for example," start="00:11:56.000" video="mainVideo-science" id="subtitle"]] -[[!template text="one I use a lot is the ivy-bibtex command." start="00:11:57.440" video="mainVideo-science" id="subtitle"]] -[[!template text="This takes a lot of time," start="00:12:00.040" video="mainVideo-science" id="subtitle"]] -[[!template text="much longer than the org-roam one," start="00:12:03.240" video="mainVideo-science" id="subtitle"]] -[[!template text="but has them in this UI," start="00:12:04.600" video="mainVideo-science" id="subtitle"]] -[[!template text="which in a lot of cases is more useful for me." start="00:12:06.480" video="mainVideo-science" id="subtitle"]] -[[!template new="1" text="The other very important thing is inserting these." start="00:12:09.840" video="mainVideo-science" id="subtitle"]] -[[!template text="For example, say I want to insert a permanent note," start="00:12:15.720" video="mainVideo-science" id="subtitle"]] -[[!template text="such as this." start="00:12:20.000" video="mainVideo-science" id="subtitle"]] -[[!template text="Its title will become a top-level heading," start="00:12:21.760" video="mainVideo-science" id="subtitle"]] -[[!template text="and everything else will be inserted as expected." start="00:12:25.400" video="mainVideo-science" id="subtitle"]] -[[!template text="But the most important thing for us" start="00:12:29.320" video="mainVideo-science" id="subtitle"]] -[[!template text="is inserting literature, right?" start="00:12:35.400" video="mainVideo-science" id="subtitle"]] -[[!template text="This is done with this command," start="00:12:37.160" video="mainVideo-science" id="subtitle"]] -[[!template text="and let's say I want to insert this." start="00:12:39.520" video="mainVideo-science" id="subtitle"]] -[[!template text="The title again becomes a heading," start="00:12:42.720" video="mainVideo-science" id="subtitle"]] -[[!template text="and this is the article title also." start="00:12:48.240" video="mainVideo-science" id="subtitle"]] -[[!template text="I store the cite key here," start="00:12:50.840" video="mainVideo-science" id="subtitle"]] -[[!template text="and everything else about it is also here." start="00:12:53.040" video="mainVideo-science" id="subtitle"]] -[[!template text="And I can add others," start="00:12:56.320" video="mainVideo-science" id="subtitle"]] -[[!template text="for example, this and this." start="00:12:58.240" video="mainVideo-science" id="subtitle"]] -[[!template text="And we have all of them here." start="00:13:01.200" video="mainVideo-science" id="subtitle"]] -[[!template text="I see it says this is the basic," start="00:13:09.040" video="mainVideo-science" id="subtitle"]] -[[!template text="so let's put it at the top." start="00:13:11.280" video="mainVideo-science" id="subtitle"]] -[[!template text="And then maybe I want to put this last." start="00:13:12.800" video="mainVideo-science" id="subtitle"]] -[[!template text="And this way, you can sort things," start="00:13:18.840" video="mainVideo-science" id="subtitle"]] -[[!template text="and typically, on the other side," start="00:13:24.160" video="mainVideo-science" id="subtitle"]] -[[!template text="I have a manuscript," start="00:13:26.320" video="mainVideo-science" id="subtitle"]] -[[!template text="and I look at what order" start="00:13:27.720" video="mainVideo-science" id="subtitle"]] -[[!template text="I want to have things in" start="00:13:30.000" video="mainVideo-science" id="subtitle"]] -[[!template text="and sort the articles and the permanent notes" start="00:13:31.160" video="mainVideo-science" id="subtitle"]] -[[!template text="in a way so that each section can have" start="00:13:34.800" video="mainVideo-science" id="subtitle"]] -[[!template text="its own citations and its own notes," start="00:13:38.360" video="mainVideo-science" id="subtitle"]] -[[!template text="which makes writing, again, very easy, in my opinion." start="00:13:41.800" video="mainVideo-science" id="subtitle"]] -[[!template new="1" text="Finally, let's go to composing the final article." start="00:13:46.200" video="mainVideo-science" id="subtitle"]] -[[!template text="This is our goal: we wrote and organized" start="00:13:53.720" video="mainVideo-science" id="subtitle"]] -[[!template text="all these literature notes" start="00:13:57.280" video="mainVideo-science" id="subtitle"]] -[[!template text="to put them in your final project." start="00:13:58.360" video="mainVideo-science" id="subtitle"]] -[[!template text="This might be an assignment" start="00:14:00.400" video="mainVideo-science" id="subtitle"]] -[[!template text="or an actual scientific article." start="00:14:01.880" video="mainVideo-science" id="subtitle"]] -[[!template text="It is apparent that you have done" start="00:14:04.440" video="mainVideo-science" id="subtitle"]] -[[!template text="a lot of work for this so far," start="00:14:07.480" video="mainVideo-science" id="subtitle"]] -[[!template text="but you don't need to do a lot more." start="00:14:09.080" video="mainVideo-science" id="subtitle"]] -[[!template text="In my opinion, this is the easiest part" start="00:14:12.280" video="mainVideo-science" id="subtitle"]] -[[!template text="of the whole workflow." start="00:14:14.080" video="mainVideo-science" id="subtitle"]] -[[!template text="People consider final article composition hard," start="00:14:15.520" video="mainVideo-science" id="subtitle"]] -[[!template text="but if you've done all these steps," start="00:14:19.280" video="mainVideo-science" id="subtitle"]] -[[!template text="you already have everything you want" start="00:14:21.240" video="mainVideo-science" id="subtitle"]] -[[!template text="to add in the article from your notes." start="00:14:23.440" video="mainVideo-science" id="subtitle"]] -[[!template text="It's already there," start="00:14:25.640" video="mainVideo-science" id="subtitle"]] -[[!template text="a lot of things are copy-pasted," start="00:14:27.720" video="mainVideo-science" id="subtitle"]] -[[!template text="it's all in a coherent order," start="00:14:30.760" video="mainVideo-science" id="subtitle"]] -[[!template text="connections are to an extent already there," start="00:14:34.040" video="mainVideo-science" id="subtitle"]] -[[!template text="and you know what citation goes where," start="00:14:38.440" video="mainVideo-science" id="subtitle"]] -[[!template text="so you can justify everything you write." start="00:14:41.600" video="mainVideo-science" id="subtitle"]] -[[!template text="The actual draft isn't there," start="00:14:44.200" video="mainVideo-science" id="subtitle"]] -[[!template text="but it is very easy" start="00:14:46.800" video="mainVideo-science" id="subtitle"]] -[[!template text="because now you just write things as you see them" start="00:14:48.520" video="mainVideo-science" id="subtitle"]] -[[!template text="in your desktop and connect them." start="00:14:52.600" video="mainVideo-science" id="subtitle"]] -[[!template text="Connections are basic--" start="00:14:54.440" video="mainVideo-science" id="subtitle"]] -[[!template text="connections and making the article good, obviously," start="00:14:56.960" video="mainVideo-science" id="subtitle"]] -[[!template text="are basically the only thing you need to worry," start="00:14:59.440" video="mainVideo-science" id="subtitle"]] -[[!template text="but those are very important" start="00:15:02.400" video="mainVideo-science" id="subtitle"]] -[[!template text="because others will only see the final manuscript," start="00:15:05.920" video="mainVideo-science" id="subtitle"]] -[[!template text="so if that's not good," start="00:15:09.040" video="mainVideo-science" id="subtitle"]] -[[!template text="then the whole assignment is not good, obviously." start="00:15:11.080" video="mainVideo-science" id="subtitle"]] -[[!template text="So it's not like your work is done," start="00:15:14.080" video="mainVideo-science" id="subtitle"]] -[[!template text="it's just very easy." start="00:15:17.520" video="mainVideo-science" id="subtitle"]] -[[!template new="1" text="And with that, I hope you liked my talk" start="00:15:19.160" video="mainVideo-science" id="subtitle"]] -[[!template text="because it is coming to an end now." start="00:15:23.280" video="mainVideo-science" id="subtitle"]] -[[!template text="I want to thank you for your time;" start="00:15:25.520" video="mainVideo-science" id="subtitle"]] -[[!template text="I hope you enjoyed it." start="00:15:27.920" video="mainVideo-science" id="subtitle"]] -[[!template text="You can feel free to email me at this address;" start="00:15:29.680" video="mainVideo-science" id="subtitle"]] -[[!template text="it has also been on every slide since the beginning." start="00:15:32.520" video="mainVideo-science" id="subtitle"]] -[[!template text="I also have the GitHub for zetteldesk.el here," start="00:15:35.640" video="mainVideo-science" id="subtitle"]] -[[!template text="and I will be available for questions." start="00:15:40.240" video="mainVideo-science" id="subtitle"]] -[[!template text="I will be viewing both the pad and the IRC" start="00:15:42.520" video="mainVideo-science" id="subtitle"]] -[[!template text="and will do a live Q&A after this. See you." start="00:15:45.000" video="mainVideo-science" id="subtitle"]] -[[!template text="Actually, before I go," start="00:15:49.160" video="mainVideo-science" id="subtitle"]] -[[!template text="let's show you the GitHub for zetteldesk.el." start="00:15:51.280" video="mainVideo-science" id="subtitle"]] -[[!template text="Here's the README; if you're interested on it," start="00:15:54.200" video="mainVideo-science" id="subtitle"]] -[[!template text="you can see more about it," start="00:15:57.120" video="mainVideo-science" id="subtitle"]] -[[!template text="and also I have a very in-depth wiki about it" start="00:15:58.520" video="mainVideo-science" id="subtitle"]] -[[!template text="with 11 pages, and talking about everything" start="00:16:02.560" video="mainVideo-science" id="subtitle"]] -[[!template text="that happens here." start="00:16:06.520" video="mainVideo-science" id="subtitle"]] -[[!template text="A lot of what we discussed is in this section" start="00:16:08.080" video="mainVideo-science" id="subtitle"]] -[[!template text="about literature notes." start="00:16:11.760" video="mainVideo-science" id="subtitle"]] -[[!template text="These documents go a lot more in-depth" start="00:16:12.920" video="mainVideo-science" id="subtitle"]] -[[!template text="in how Zetteldesk works, and also how to use it," start="00:16:17.200" video="mainVideo-science" id="subtitle"]] -[[!template text="so if you're interested, feel free to read them," start="00:16:22.800" video="mainVideo-science" id="subtitle"]] -[[!template text="and if you have any problems," start="00:16:27.720" video="mainVideo-science" id="subtitle"]] -[[!template text="you can open an issue about it;" start="00:16:30.240" video="mainVideo-science" id="subtitle"]] -[[!template text="I will be very active. Thank you." start="00:16:31.840" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""Hello everyone, I'm Vidianos.""" start="00:00:00.000" video="mainVideo-science" id="subtitle"]] +[[!template text="""Today I'm going to show you""" start="00:00:02.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""how I write and organize""" start="00:00:03.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""my literature notes using Emacs.""" start="00:00:04.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""I take my notes using Zettelkasten,""" start="00:00:06.440" video="mainVideo-science" id="subtitle"]] +[[!template text="""which you may or may not have heard.""" start="00:00:08.720" video="mainVideo-science" id="subtitle"]] +[[!template text="""It is about taking small atomic notes""" start="00:00:11.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""and linking them one another""" start="00:00:13.840" video="mainVideo-science" id="subtitle"]] +[[!template text="""to create your so-called second brain.""" start="00:00:15.000" video="mainVideo-science" id="subtitle"]] +[[!template text="""Here is mine.""" start="00:00:17.600" video="mainVideo-science" id="subtitle"]] +[[!template text="""This is a graph of all the notes""" start="00:00:19.160" video="mainVideo-science" id="subtitle"]] +[[!template text="""I have accumulated the last few years.""" start="00:00:20.720" video="mainVideo-science" id="subtitle"]] +[[!template text="""It has various types of notes,""" start="00:00:22.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""but we're mainly going to focus on""" start="00:00:25.200" video="mainVideo-science" id="subtitle"]] +[[!template text="""literature notes today.""" start="00:00:25.960" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""Here are the contents of my talk.""" start="00:00:28.320" video="mainVideo-science" id="subtitle"]] +[[!template text="""We're going to start""" start="00:00:29.640" video="mainVideo-science" id="subtitle"]] +[[!template text="""with bibliography management,""" start="00:00:30.440" video="mainVideo-science" id="subtitle"]] +[[!template text="""which is how I take bibliography""" start="00:00:31.920" video="mainVideo-science" id="subtitle"]] +[[!template text="""from the web and import it to Emacs.""" start="00:00:33.320" video="mainVideo-science" id="subtitle"]] +[[!template text="""Then we're going to talk about""" start="00:00:35.960" video="mainVideo-science" id="subtitle"]] +[[!template text="""how I create literature notes""" start="00:00:37.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""using a custom org-roam-bibtex template I have.""" start="00:00:38.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""And after talking about that,""" start="00:00:42.760" video="mainVideo-science" id="subtitle"]] +[[!template text="""we can talk about how I write literature notes,""" start="00:00:43.920" video="mainVideo-science" id="subtitle"]] +[[!template text="""which is through annotating an article""" start="00:00:46.360" video="mainVideo-science" id="subtitle"]] +[[!template text="""using org-noter. Org-noter is a package""" start="00:00:48.240" video="mainVideo-science" id="subtitle"]] +[[!template text="""that allows you to annotate PDFs""" start="00:00:51.320" video="mainVideo-science" id="subtitle"]] +[[!template text="""using the Org format""" start="00:00:53.440" video="mainVideo-science" id="subtitle"]] +[[!template text="""and creates a supplementary Org file to your PDF.""" start="00:00:55.000" video="mainVideo-science" id="subtitle"]] +[[!template text="""Then we're going to talk about""" start="00:00:59.560" video="mainVideo-science" id="subtitle"]] +[[!template text="""adding the literature to your Zettelkasten,""" start="00:01:00.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""which is a simple but important topic,""" start="00:01:03.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""and how you can write permanent notes""" start="00:01:06.280" video="mainVideo-science" id="subtitle"]] +[[!template text="""based on the info you obtain from this literature.""" start="00:01:08.600" video="mainVideo-science" id="subtitle"]] +[[!template text="""Lastly, we're going to focus on""" start="00:01:11.720" video="mainVideo-science" id="subtitle"]] +[[!template text="""the organization problem""" start="00:01:13.320" video="mainVideo-science" id="subtitle"]] +[[!template text="""one might find when having a lot of literature""" start="00:01:15.000" video="mainVideo-science" id="subtitle"]] +[[!template text="""for an assignment or an article or something,""" start="00:01:17.720" video="mainVideo-science" id="subtitle"]] +[[!template text="""and how I have tried to solve this""" start="00:01:21.440" video="mainVideo-science" id="subtitle"]] +[[!template text="""with my package Zetteldesk.""" start="00:01:22.960" video="mainVideo-science" id="subtitle"]] +[[!template text="""This isn't the perfect solution,""" start="00:01:24.840" video="mainVideo-science" id="subtitle"]] +[[!template text="""but it is what I have, and I really like it.""" start="00:01:26.360" video="mainVideo-science" id="subtitle"]] +[[!template text="""Finally, we're going to talk about""" start="00:01:29.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""how to compose the final article""" start="00:01:30.840" video="mainVideo-science" id="subtitle"]] +[[!template text="""that you want to produce""" start="00:01:33.560" video="mainVideo-science" id="subtitle"]] +[[!template text="""using this literature""" start="00:01:35.200" video="mainVideo-science" id="subtitle"]] +[[!template text="""with the technique described""" start="00:01:36.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""in the rest of this talk.""" start="00:01:38.640" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""So let's begin the talk""" start="00:01:40.560" video="mainVideo-science" id="subtitle"]] +[[!template text="""with bibliography management.""" start="00:01:42.240" video="mainVideo-science" id="subtitle"]] +[[!template text="""Zotero is the bibliography manager I use.""" start="00:01:44.240" video="mainVideo-science" id="subtitle"]] +[[!template text="""It is very simple to store articles with it,""" start="00:01:47.240" video="mainVideo-science" id="subtitle"]] +[[!template text="""and it exports to .bib,""" start="00:01:49.400" video="mainVideo-science" id="subtitle"]] +[[!template text="""integrating with packages""" start="00:01:50.680" video="mainVideo-science" id="subtitle"]] +[[!template text="""such as org-roam-bibtex and ivy-bibtex.""" start="00:01:52.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""When researching, I typically find""" start="00:01:54.960" video="mainVideo-science" id="subtitle"]] +[[!template text="""a long list of articles from a search engine.""" start="00:01:56.680" video="mainVideo-science" id="subtitle"]] +[[!template text="""I open the titles which have interesting titles""" start="00:02:00.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""through their abstracts""" start="00:02:03.440" video="mainVideo-science" id="subtitle"]] +[[!template text="""and save to Zotero those whose abstracts""" start="00:02:05.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""are the most relevant to what I want.""" start="00:02:07.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""From these articles,""" start="00:02:10.320" video="mainVideo-science" id="subtitle"]] +[[!template text="""I typically won't read all of them""" start="00:02:11.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""because they're a lot,""" start="00:02:13.360" video="mainVideo-science" id="subtitle"]] +[[!template text="""but I will select a few,""" start="00:02:14.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""once I have collected as many as I want.""" start="00:02:17.760" video="mainVideo-science" id="subtitle"]] +[[!template text="""Zotero acts as a way to store everything""" start="00:02:21.640" video="mainVideo-science" id="subtitle"]] +[[!template text="""that might be interesting,""" start="00:02:24.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""while Emacs and my Zettelkasten""" start="00:02:25.480" video="mainVideo-science" id="subtitle"]] +[[!template text="""stores everything that is definitely interesting,""" start="00:02:28.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""and I have read it already.""" start="00:02:30.960" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""And then we can move to""" start="00:02:35.200" video="mainVideo-science" id="subtitle"]] +[[!template text="""how I create literature notes.""" start="00:02:36.360" video="mainVideo-science" id="subtitle"]] +[[!template text="""I set the default action of ivy-bibtex""" start="00:02:38.560" video="mainVideo-science" id="subtitle"]] +[[!template text="""to ivy-bibtex-edit-notes,""" start="00:02:41.120" video="mainVideo-science" id="subtitle"]] +[[!template text="""which will prompt-- which""" start="00:02:43.600" video="mainVideo-science" id="subtitle"]] +[[!template text="""with org-roam-bibtex-mode active,""" start="00:02:44.920" video="mainVideo-science" id="subtitle"]] +[[!template text="""prompts you for an org-capture template""" start="00:02:46.480" video="mainVideo-science" id="subtitle"]] +[[!template text="""when selecting something""" start="00:02:48.840" video="mainVideo-science" id="subtitle"]] +[[!template text="""if the node doesn't exist,""" start="00:02:50.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""or takes you to the existing node.""" start="00:02:52.320" video="mainVideo-science" id="subtitle"]] +[[!template text="""And obviously you need to have this here,""" start="00:02:54.960" video="mainVideo-science" id="subtitle"]] +[[!template text="""to set the default action""" start="00:02:58.440" video="mainVideo-science" id="subtitle"]] +[[!template text="""that was already there""" start="00:03:00.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""to a letter.""" start="00:03:02.600" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""Then we can move to my org-roam reference template,""" start="00:03:04.960" video="mainVideo-science" id="subtitle"]] +[[!template text="""using org-roam-bibtex.""" start="00:03:08.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""This isn't so complicated,""" start="00:03:11.160" video="mainVideo-science" id="subtitle"]] +[[!template text="""but it has some important stuff""" start="00:03:12.440" video="mainVideo-science" id="subtitle"]] +[[!template text="""I want to highlight.""" start="00:03:14.120" video="mainVideo-science" id="subtitle"]] +[[!template text="""Save it to the ref directory,""" start="00:03:14.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""so I can remember where it is,""" start="00:03:17.400" video="mainVideo-science" id="subtitle"]] +[[!template text="""and it's classified as a literature note.""" start="00:03:19.720" video="mainVideo-science" id="subtitle"]] +[[!template text="""The file name is the cite key,""" start="00:03:23.560" video="mainVideo-science" id="subtitle"]] +[[!template text="""which is easy and small,""" start="00:03:25.120" video="mainVideo-science" id="subtitle"]] +[[!template text="""but the title is the actual article's title.""" start="00:03:27.760" video="mainVideo-science" id="subtitle"]] +[[!template text="""Give it a tag of the entry-type;""" start="00:03:30.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""this is typically "article,"""" start="00:03:32.320" video="mainVideo-science" id="subtitle"]] +[[!template text="""but it's easy to sort things this way""" start="00:03:35.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""because not all literature notes are articles.""" start="00:03:37.480" video="mainVideo-science" id="subtitle"]] +[[!template text="""And then give the keywords""" start="00:03:41.400" video="mainVideo-science" id="subtitle"]] +[[!template text="""that are given by Zotero, because why not?""" start="00:03:43.160" video="mainVideo-science" id="subtitle"]] +[[!template text="""Tags here are tags from Zettelkasten.""" start="00:03:47.360" video="mainVideo-science" id="subtitle"]] +[[!template text="""These are the links to""" start="00:03:51.480" video="mainVideo-science" id="subtitle"]] +[[!template text="""other files which are relevant,""" start="00:03:53.640" video="mainVideo-science" id="subtitle"]] +[[!template text="""but its initialization is empty, obviously.""" start="00:03:55.360" video="mainVideo-science" id="subtitle"]] +[[!template text="""And then this heading is where""" start="00:03:58.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""all the magic happens.""" start="00:03:59.840" video="mainVideo-science" id="subtitle"]] +[[!template text="""The name is just not really so relevant;""" start="00:04:00.840" video="mainVideo-science" id="subtitle"]] +[[!template text="""I just needed something that made sense.""" start="00:04:04.720" video="mainVideo-science" id="subtitle"]] +[[!template text="""The properties are what matters,""" start="00:04:07.560" video="mainVideo-science" id="subtitle"]] +[[!template text="""and mainly this one here.""" start="00:04:10.400" video="mainVideo-science" id="subtitle"]] +[[!template text="""The ${file} attribute finds""" start="00:04:12.240" video="mainVideo-science" id="subtitle"]] +[[!template text="""the file of this specific literature""" start="00:04:18.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""and makes sure that org-noter works""" start="00:04:24.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""by default here.""" start="00:04:27.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""As I'm going to show you in a moment,""" start="00:04:29.640" video="mainVideo-science" id="subtitle"]] +[[!template text="""this way [of] initializing the literature note,""" start="00:04:32.560" video="mainVideo-science" id="subtitle"]] +[[!template text="""org-noter works by default.""" start="00:04:34.600" video="mainVideo-science" id="subtitle"]] +[[!template text="""That's all, basically, for the template.""" start="00:04:37.000" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""This is the point of the talk""" start="00:04:40.160" video="mainVideo-science" id="subtitle"]] +[[!template text="""where we reach the first demo.""" start="00:04:42.760" video="mainVideo-science" id="subtitle"]] +[[!template text="""This is about opening ivy-bibtex,""" start="00:04:44.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""selecting an article I want to annotate,""" start="00:04:47.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""initializing the literature note.""" start="00:04:50.240" video="mainVideo-science" id="subtitle"]] +[[!template text="""We can see that everything""" start="00:04:53.000" video="mainVideo-science" id="subtitle"]] +[[!template text="""is inserted in for me,""" start="00:04:55.000" video="mainVideo-science" id="subtitle"]] +[[!template text="""and if I open org-noter on this heading,""" start="00:04:56.480" video="mainVideo-science" id="subtitle"]] +[[!template text="""it opens the article, as expected.""" start="00:05:01.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""I can read the article,""" start="00:05:03.760" video="mainVideo-science" id="subtitle"]] +[[!template text="""I can say I want to""" start="00:05:06.200" video="mainVideo-science" id="subtitle"]] +[[!template text="""annotate something here.""" start="00:05:08.440" video="mainVideo-science" id="subtitle"]] +[[!template text="""Obviously, annotation is not that simple as here,""" start="00:05:20.720" video="mainVideo-science" id="subtitle"]] +[[!template text="""but I don't really have the time""" start="00:05:24.120" video="mainVideo-science" id="subtitle"]] +[[!template text="""to actually annotate an article live.""" start="00:05:26.480" video="mainVideo-science" id="subtitle"]] +[[!template text="""But you can keep going, and it's a good setup.""" start="00:05:28.600" video="mainVideo-science" id="subtitle"]] +[[!template text="""Then close org-noter,""" start="00:05:34.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""and let's go presentation again.""" start="00:05:39.880" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""Moving on, this section is some stuff""" start="00:05:40.840" video="mainVideo-science" id="subtitle"]] +[[!template text="""about my annotation process.""" start="00:05:44.360" video="mainVideo-science" id="subtitle"]] +[[!template text="""As I said, there is not enough time for me""" start="00:05:45.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""to actually annotate an article live,""" start="00:05:49.480" video="mainVideo-science" id="subtitle"]] +[[!template text="""but here are some things about it.""" start="00:05:51.120" video="mainVideo-science" id="subtitle"]] +[[!template text="""First, is that I annotate with org-noter,""" start="00:05:53.000" video="mainVideo-science" id="subtitle"]] +[[!template text="""which I absolutely love.""" start="00:05:55.480" video="mainVideo-science" id="subtitle"]] +[[!template text="""It is great for annotations""" start="00:05:56.720" video="mainVideo-science" id="subtitle"]] +[[!template text="""because you do them in org,""" start="00:05:59.600" video="mainVideo-science" id="subtitle"]] +[[!template text="""which is an amazing format""" start="00:06:02.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""and gives you a lot of flexibility,""" start="00:06:03.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""such as adding to the Zettelkasten,""" start="00:06:05.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""being initialized by a capture template,""" start="00:06:07.840" video="mainVideo-science" id="subtitle"]] +[[!template text="""and other things.""" start="00:06:11.320" video="mainVideo-science" id="subtitle"]] +[[!template text="""But also, you don't need to look for""" start="00:06:13.120" video="mainVideo-science" id="subtitle"]] +[[!template text="""the notes inside the PDF,""" start="00:06:15.960" video="mainVideo-science" id="subtitle"]] +[[!template text="""which is a problem you can have""" start="00:06:17.360" video="mainVideo-science" id="subtitle"]] +[[!template text="""if you annotate on the PDF,""" start="00:06:19.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""and it is very annoying in my opinion.""" start="00:06:20.960" video="mainVideo-science" id="subtitle"]] +[[!template text="""So I prefer having these notes,""" start="00:06:23.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""and I can only focus on them,""" start="00:06:26.440" video="mainVideo-science" id="subtitle"]] +[[!template text="""but I can also see where they refer.""" start="00:06:27.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""The other scenarios are not so good.""" start="00:06:29.760" video="mainVideo-science" id="subtitle"]] +[[!template text="""Annotating on the PDF,""" start="00:06:33.200" video="mainVideo-science" id="subtitle"]] +[[!template text="""you search for it,""" start="00:06:35.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""and if you don't know which section it refers to,""" start="00:06:36.480" video="mainVideo-science" id="subtitle"]] +[[!template text="""then you need to look about it,""" start="00:06:41.200" video="mainVideo-science" id="subtitle"]] +[[!template text="""and that is very tiring.""" start="00:06:42.760" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""Also, I am always annotating in English.""" start="00:06:44.240" video="mainVideo-science" id="subtitle"]] +[[!template text="""This is not my mother tongue,""" start="00:06:48.360" video="mainVideo-science" id="subtitle"]] +[[!template text="""but it helps me avoid""" start="00:06:50.200" video="mainVideo-science" id="subtitle"]] +[[!template text="""the necessary mental overhead""" start="00:06:52.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""of translating while reading.""" start="00:06:53.680" video="mainVideo-science" id="subtitle"]] +[[!template text="""I want to pay attention to what I read""" start="00:06:55.200" video="mainVideo-science" id="subtitle"]] +[[!template text="""and not to translate stuff.""" start="00:06:57.560" video="mainVideo-science" id="subtitle"]] +[[!template text="""I will translate later.""" start="00:06:59.680" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""And when finishing an article,""" start="00:07:02.120" video="mainVideo-science" id="subtitle"]] +[[!template text="""I write a mini-abstract myself,""" start="00:07:05.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""which contains what I think about the article.""" start="00:07:07.720" video="mainVideo-science" id="subtitle"]] +[[!template text="""It doesn't need to be much,""" start="00:07:10.120" video="mainVideo-science" id="subtitle"]] +[[!template text="""it's usually like 3 or 4 paragraphs,""" start="00:07:11.640" video="mainVideo-science" id="subtitle"]] +[[!template text="""and it shows things that are useful in the article,""" start="00:07:14.000" video="mainVideo-science" id="subtitle"]] +[[!template text="""and what is mentioned that matters to me.""" start="00:07:18.320" video="mainVideo-science" id="subtitle"]] +[[!template text="""So I can look back at it,""" start="00:07:21.160" video="mainVideo-science" id="subtitle"]] +[[!template text="""and it is very easy for me to find""" start="00:07:22.600" video="mainVideo-science" id="subtitle"]] +[[!template text="""what I got from this article,""" start="00:07:24.920" video="mainVideo-science" id="subtitle"]] +[[!template text="""so where I will cite it on my actual project.""" start="00:07:26.600" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""Then last thing you need to do""" start="00:07:30.200" video="mainVideo-science" id="subtitle"]] +[[!template text="""is add a note to your Zettelkasten.""" start="00:07:33.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""This is very easy due to it being in an org format.""" start="00:07:35.480" video="mainVideo-science" id="subtitle"]] +[[!template text="""You can just have it in the org-roam directory,""" start="00:07:38.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""which it automatically goes to,""" start="00:07:41.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""and link it to other relevant notes,""" start="00:07:43.640" video="mainVideo-science" id="subtitle"]] +[[!template text="""which is its index""" start="00:07:46.560" video="mainVideo-science" id="subtitle"]] +[[!template text="""because everything in my Zettelkasten""" start="00:07:48.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""(at least) has an index,""" start="00:07:50.560" video="mainVideo-science" id="subtitle"]] +[[!template text="""but also every other permanent note""" start="00:07:51.720" video="mainVideo-science" id="subtitle"]] +[[!template text="""whose contents are in one way or another""" start="00:07:54.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""mentioned inside the article.""" start="00:07:56.760" video="mainVideo-science" id="subtitle"]] +[[!template text="""This way the article is in a network with notes""" start="00:07:58.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""that are similar to it.""" start="00:08:00.360" video="mainVideo-science" id="subtitle"]] +[[!template text="""Then we move on to the second demo,""" start="00:08:02.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""which is about a full-fledged literature note.""" start="00:08:05.360" video="mainVideo-science" id="subtitle"]] +[[!template text="""We can go on org-roam-node-find,""" start="00:08:08.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""search for references,""" start="00:08:11.120" video="mainVideo-science" id="subtitle"]] +[[!template text="""go to this, and you can see""" start="00:08:13.160" video="mainVideo-science" id="subtitle"]] +[[!template text="""it is linked to other notes.""" start="00:08:15.560" video="mainVideo-science" id="subtitle"]] +[[!template text="""And here is the mini-abstract,""" start="00:08:17.760" video="mainVideo-science" id="subtitle"]] +[[!template text="""and here are my notes on it.""" start="00:08:20.040" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""The last thing you need to do""" start="00:08:21.480" video="mainVideo-science" id="subtitle"]] +[[!template text="""when creating a literature note,""" start="00:08:27.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""is obviously create permanent notes""" start="00:08:29.120" video="mainVideo-science" id="subtitle"]] +[[!template text="""based on what you read.""" start="00:08:31.320" video="mainVideo-science" id="subtitle"]] +[[!template text="""If you never create these literature notes,""" start="00:08:32.280" video="mainVideo-science" id="subtitle"]] +[[!template text="""you will never get new information.""" start="00:08:35.680" video="mainVideo-science" id="subtitle"]] +[[!template text="""So for your Zettelkasten to grow,""" start="00:08:37.680" video="mainVideo-science" id="subtitle"]] +[[!template text="""you need to create such notes.""" start="00:08:40.440" video="mainVideo-science" id="subtitle"]] +[[!template text="""This means that the subject you are researching""" start="00:08:42.360" video="mainVideo-science" id="subtitle"]] +[[!template text="""is not just literature notes""" start="00:08:45.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""but has well-structured permanent notes,""" start="00:08:47.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""which is what you will actually read.""" start="00:08:50.280" video="mainVideo-science" id="subtitle"]] +[[!template text="""You typically only read literature notes""" start="00:08:52.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""to see what gets cited where.""" start="00:08:55.160" video="mainVideo-science" id="subtitle"]] +[[!template text="""What you will mostly read""" start="00:08:57.160" video="mainVideo-science" id="subtitle"]] +[[!template text="""is these permanent notes""" start="00:08:58.760" video="mainVideo-science" id="subtitle"]] +[[!template text="""that you create from this knowledge.""" start="00:08:59.840" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""So finally we are at the last part of the talk,""" start="00:09:01.680" video="mainVideo-science" id="subtitle"]] +[[!template text="""which is about organizing literature notes.""" start="00:09:05.240" video="mainVideo-science" id="subtitle"]] +[[!template text="""And this is in my opinion""" start="00:09:07.360" video="mainVideo-science" id="subtitle"]] +[[!template text="""the most interesting part""" start="00:09:09.560" video="mainVideo-science" id="subtitle"]] +[[!template text="""because it is very unique.""" start="00:09:10.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""It uses a package I wrote myself,""" start="00:09:12.200" video="mainVideo-science" id="subtitle"]] +[[!template text="""and it doesn't have as much usage""" start="00:09:14.720" video="mainVideo-science" id="subtitle"]] +[[!template text="""as the rest of the things I described so far.""" start="00:09:18.320" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""So what is the problem you might find?""" start="00:09:21.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""Indeed, if you read a lot of things,""" start="00:09:24.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""you have a large collection of notes,""" start="00:09:27.960" video="mainVideo-science" id="subtitle"]] +[[!template text="""and it's not the only thing you will think about.""" start="00:09:30.960" video="mainVideo-science" id="subtitle"]] +[[!template text="""However, you do need to""" start="00:09:33.920" video="mainVideo-science" id="subtitle"]] +[[!template text="""justify everything with citations,""" start="00:09:36.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""so you need to remember everything""" start="00:09:37.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""you read in these notes.""" start="00:09:39.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""You have done a lot of work,""" start="00:09:41.120" video="mainVideo-science" id="subtitle"]] +[[!template text="""but there is still a lot for you""" start="00:09:43.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""to reach your final manuscript.""" start="00:09:45.920" video="mainVideo-science" id="subtitle"]] +[[!template text="""Except if there was a handy little way""" start="00:09:47.320" video="mainVideo-science" id="subtitle"]] +[[!template text="""to combine everything""" start="00:09:50.360" video="mainVideo-science" id="subtitle"]] +[[!template text="""and sort it in a very easy way.""" start="00:09:52.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""Well, there is,""" start="00:09:55.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""and I think it came out pretty well.""" start="00:09:56.960" video="mainVideo-science" id="subtitle"]] +[[!template text="""It's zetteldesk.el.""" start="00:10:00.120" video="mainVideo-science" id="subtitle"]] +[[!template text="""It was inspired by this quote here""" start="00:10:01.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""from How to Take Smart Notes.""" start="00:10:05.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""Sönke Ahrens here talked about a desktop,""" start="00:10:06.480" video="mainVideo-science" id="subtitle"]] +[[!template text="""which you have all the literature""" start="00:10:09.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""you want in that desktop,""" start="00:10:13.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""and you try to bring it in order.""" start="00:10:16.240" video="mainVideo-science" id="subtitle"]] +[[!template text="""And by doing that,""" start="00:10:20.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""you can improve your ideas""" start="00:10:22.600" video="mainVideo-science" id="subtitle"]] +[[!template text="""and have a structure""" start="00:10:24.840" video="mainVideo-science" id="subtitle"]] +[[!template text="""so that your manuscript will then be""" start="00:10:27.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""very, very easy to write.""" start="00:10:30.920" video="mainVideo-science" id="subtitle"]] +[[!template text="""And as I say here, in trying to do this,""" start="00:10:33.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""I made something much more general""" start="00:10:36.280" video="mainVideo-science" id="subtitle"]] +[[!template text="""than it needed to be, so yeah,""" start="00:10:38.920" video="mainVideo-science" id="subtitle"]] +[[!template text="""you can use it for many other things.""" start="00:10:41.560" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""But before I show you some things about it,""" start="00:10:43.600" video="mainVideo-science" id="subtitle"]] +[[!template text="""I want to introduce you to what a desktop is.""" start="00:10:46.960" video="mainVideo-science" id="subtitle"]] +[[!template text="""It's essentially a collection of the knowledge""" start="00:10:49.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""you want to be able to see.""" start="00:10:53.160" video="mainVideo-science" id="subtitle"]] +[[!template text="""You add things to your Zetteldesk,""" start="00:10:54.840" video="mainVideo-science" id="subtitle"]] +[[!template text="""and using filter functions,""" start="00:10:58.000" video="mainVideo-science" id="subtitle"]] +[[!template text="""you only see these notes and nothing else,""" start="00:11:01.680" video="mainVideo-science" id="subtitle"]] +[[!template text="""which in my opinion is very handy.""" start="00:11:04.920" video="mainVideo-science" id="subtitle"]] +[[!template text="""So having said that,""" start="00:11:07.360" video="mainVideo-science" id="subtitle"]] +[[!template text="""we can see these things in action""" start="00:11:10.320" video="mainVideo-science" id="subtitle"]] +[[!template text="""for the final demo of the talk.""" start="00:11:12.480" video="mainVideo-science" id="subtitle"]] +[[!template text="""This is the third one.""" start="00:11:14.400" video="mainVideo-science" id="subtitle"]] +[[!template text="""I will go to an index file of mine.""" start="00:11:15.840" video="mainVideo-science" id="subtitle"]] +[[!template text="""This is 3D printing,""" start="00:11:20.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""an assignment I had last semester.""" start="00:11:21.960" video="mainVideo-science" id="subtitle"]] +[[!template text="""And this has 28 backlinks,""" start="00:11:23.480" video="mainVideo-science" id="subtitle"]] +[[!template text="""so a lot of things that I looked at""" start="00:11:27.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""for this assignment.""" start="00:11:30.400" video="mainVideo-science" id="subtitle"]] +[[!template text="""I can say I want to add""" start="00:11:31.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""the current note's backlinks to the Zetteldesk,""" start="00:11:33.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""and now I have a filtered version""" start="00:11:35.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""of org-roam-node-find defined,""" start="00:11:38.240" video="mainVideo-science" id="subtitle"]] +[[!template text="""which only lists these 29 notes.""" start="00:11:40.120" video="mainVideo-science" id="subtitle"]] +[[!template text="""Very nice, right?""" start="00:11:42.000" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""I can also filter just the literature notes,""" start="00:11:45.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""which can also use other UIs beside org-roam,""" start="00:11:49.160" video="mainVideo-science" id="subtitle"]] +[[!template text="""such as, for example,""" start="00:11:56.000" video="mainVideo-science" id="subtitle"]] +[[!template text="""one I use a lot is the ivy-bibtex command.""" start="00:11:57.440" video="mainVideo-science" id="subtitle"]] +[[!template text="""This takes a lot of time,""" start="00:12:00.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""much longer than the org-roam one,""" start="00:12:03.240" video="mainVideo-science" id="subtitle"]] +[[!template text="""but has them in this UI,""" start="00:12:04.600" video="mainVideo-science" id="subtitle"]] +[[!template text="""which in a lot of cases is more useful for me.""" start="00:12:06.480" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""The other very important thing is inserting these.""" start="00:12:09.840" video="mainVideo-science" id="subtitle"]] +[[!template text="""For example, say I want to insert a permanent note,""" start="00:12:15.720" video="mainVideo-science" id="subtitle"]] +[[!template text="""such as this.""" start="00:12:20.000" video="mainVideo-science" id="subtitle"]] +[[!template text="""Its title will become a top-level heading,""" start="00:12:21.760" video="mainVideo-science" id="subtitle"]] +[[!template text="""and everything else will be inserted as expected.""" start="00:12:25.400" video="mainVideo-science" id="subtitle"]] +[[!template text="""But the most important thing for us""" start="00:12:29.320" video="mainVideo-science" id="subtitle"]] +[[!template text="""is inserting literature, right?""" start="00:12:35.400" video="mainVideo-science" id="subtitle"]] +[[!template text="""This is done with this command,""" start="00:12:37.160" video="mainVideo-science" id="subtitle"]] +[[!template text="""and let's say I want to insert this.""" start="00:12:39.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""The title again becomes a heading,""" start="00:12:42.720" video="mainVideo-science" id="subtitle"]] +[[!template text="""and this is the article title also.""" start="00:12:48.240" video="mainVideo-science" id="subtitle"]] +[[!template text="""I store the cite key here,""" start="00:12:50.840" video="mainVideo-science" id="subtitle"]] +[[!template text="""and everything else about it is also here.""" start="00:12:53.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""And I can add others,""" start="00:12:56.320" video="mainVideo-science" id="subtitle"]] +[[!template text="""for example, this and this.""" start="00:12:58.240" video="mainVideo-science" id="subtitle"]] +[[!template text="""And we have all of them here.""" start="00:13:01.200" video="mainVideo-science" id="subtitle"]] +[[!template text="""I see it says this is the basic,""" start="00:13:09.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""so let's put it at the top.""" start="00:13:11.280" video="mainVideo-science" id="subtitle"]] +[[!template text="""And then maybe I want to put this last.""" start="00:13:12.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""And this way, you can sort things,""" start="00:13:18.840" video="mainVideo-science" id="subtitle"]] +[[!template text="""and typically, on the other side,""" start="00:13:24.160" video="mainVideo-science" id="subtitle"]] +[[!template text="""I have a manuscript,""" start="00:13:26.320" video="mainVideo-science" id="subtitle"]] +[[!template text="""and I look at what order""" start="00:13:27.720" video="mainVideo-science" id="subtitle"]] +[[!template text="""I want to have things in""" start="00:13:30.000" video="mainVideo-science" id="subtitle"]] +[[!template text="""and sort the articles and the permanent notes""" start="00:13:31.160" video="mainVideo-science" id="subtitle"]] +[[!template text="""in a way so that each section can have""" start="00:13:34.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""its own citations and its own notes,""" start="00:13:38.360" video="mainVideo-science" id="subtitle"]] +[[!template text="""which makes writing, again, very easy, in my opinion.""" start="00:13:41.800" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""Finally, let's go to composing the final article.""" start="00:13:46.200" video="mainVideo-science" id="subtitle"]] +[[!template text="""This is our goal: we wrote and organized""" start="00:13:53.720" video="mainVideo-science" id="subtitle"]] +[[!template text="""all these literature notes""" start="00:13:57.280" video="mainVideo-science" id="subtitle"]] +[[!template text="""to put them in your final project.""" start="00:13:58.360" video="mainVideo-science" id="subtitle"]] +[[!template text="""This might be an assignment""" start="00:14:00.400" video="mainVideo-science" id="subtitle"]] +[[!template text="""or an actual scientific article.""" start="00:14:01.880" video="mainVideo-science" id="subtitle"]] +[[!template text="""It is apparent that you have done""" start="00:14:04.440" video="mainVideo-science" id="subtitle"]] +[[!template text="""a lot of work for this so far,""" start="00:14:07.480" video="mainVideo-science" id="subtitle"]] +[[!template text="""but you don't need to do a lot more.""" start="00:14:09.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""In my opinion, this is the easiest part""" start="00:14:12.280" video="mainVideo-science" id="subtitle"]] +[[!template text="""of the whole workflow.""" start="00:14:14.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""People consider final article composition hard,""" start="00:14:15.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""but if you've done all these steps,""" start="00:14:19.280" video="mainVideo-science" id="subtitle"]] +[[!template text="""you already have everything you want""" start="00:14:21.240" video="mainVideo-science" id="subtitle"]] +[[!template text="""to add in the article from your notes.""" start="00:14:23.440" video="mainVideo-science" id="subtitle"]] +[[!template text="""It's already there,""" start="00:14:25.640" video="mainVideo-science" id="subtitle"]] +[[!template text="""a lot of things are copy-pasted,""" start="00:14:27.720" video="mainVideo-science" id="subtitle"]] +[[!template text="""it's all in a coherent order,""" start="00:14:30.760" video="mainVideo-science" id="subtitle"]] +[[!template text="""connections are to an extent already there,""" start="00:14:34.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""and you know what citation goes where,""" start="00:14:38.440" video="mainVideo-science" id="subtitle"]] +[[!template text="""so you can justify everything you write.""" start="00:14:41.600" video="mainVideo-science" id="subtitle"]] +[[!template text="""The actual draft isn't there,""" start="00:14:44.200" video="mainVideo-science" id="subtitle"]] +[[!template text="""but it is very easy""" start="00:14:46.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""because now you just write things as you see them""" start="00:14:48.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""in your desktop and connect them.""" start="00:14:52.600" video="mainVideo-science" id="subtitle"]] +[[!template text="""Connections are basic--""" start="00:14:54.440" video="mainVideo-science" id="subtitle"]] +[[!template text="""connections and making the article good, obviously,""" start="00:14:56.960" video="mainVideo-science" id="subtitle"]] +[[!template text="""are basically the only thing you need to worry,""" start="00:14:59.440" video="mainVideo-science" id="subtitle"]] +[[!template text="""but those are very important""" start="00:15:02.400" video="mainVideo-science" id="subtitle"]] +[[!template text="""because others will only see the final manuscript,""" start="00:15:05.920" video="mainVideo-science" id="subtitle"]] +[[!template text="""so if that's not good,""" start="00:15:09.040" video="mainVideo-science" id="subtitle"]] +[[!template text="""then the whole assignment is not good, obviously.""" start="00:15:11.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""So it's not like your work is done,""" start="00:15:14.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""it's just very easy.""" start="00:15:17.520" video="mainVideo-science" id="subtitle"]] +[[!template new="1" text="""And with that, I hope you liked my talk""" start="00:15:19.160" video="mainVideo-science" id="subtitle"]] +[[!template text="""because it is coming to an end now.""" start="00:15:23.280" video="mainVideo-science" id="subtitle"]] +[[!template text="""I want to thank you for your time;""" start="00:15:25.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""I hope you enjoyed it.""" start="00:15:27.920" video="mainVideo-science" id="subtitle"]] +[[!template text="""You can feel free to email me at this address;""" start="00:15:29.680" video="mainVideo-science" id="subtitle"]] +[[!template text="""it has also been on every slide since the beginning.""" start="00:15:32.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""I also have the GitHub for zetteldesk.el here,""" start="00:15:35.640" video="mainVideo-science" id="subtitle"]] +[[!template text="""and I will be available for questions.""" start="00:15:40.240" video="mainVideo-science" id="subtitle"]] +[[!template text="""I will be viewing both the pad and the IRC""" start="00:15:42.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""and will do a live Q&A after this. See you.""" start="00:15:45.000" video="mainVideo-science" id="subtitle"]] +[[!template text="""Actually, before I go,""" start="00:15:49.160" video="mainVideo-science" id="subtitle"]] +[[!template text="""let's show you the GitHub for zetteldesk.el.""" start="00:15:51.280" video="mainVideo-science" id="subtitle"]] +[[!template text="""Here's the README; if you're interested on it,""" start="00:15:54.200" video="mainVideo-science" id="subtitle"]] +[[!template text="""you can see more about it,""" start="00:15:57.120" video="mainVideo-science" id="subtitle"]] +[[!template text="""and also I have a very in-depth wiki about it""" start="00:15:58.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""with 11 pages, and talking about everything""" start="00:16:02.560" video="mainVideo-science" id="subtitle"]] +[[!template text="""that happens here.""" start="00:16:06.520" video="mainVideo-science" id="subtitle"]] +[[!template text="""A lot of what we discussed is in this section""" start="00:16:08.080" video="mainVideo-science" id="subtitle"]] +[[!template text="""about literature notes.""" start="00:16:11.760" video="mainVideo-science" id="subtitle"]] +[[!template text="""These documents go a lot more in-depth""" start="00:16:12.920" video="mainVideo-science" id="subtitle"]] +[[!template text="""in how Zetteldesk works, and also how to use it,""" start="00:16:17.200" video="mainVideo-science" id="subtitle"]] +[[!template text="""so if you're interested, feel free to read them,""" start="00:16:22.800" video="mainVideo-science" id="subtitle"]] +[[!template text="""and if you have any problems,""" start="00:16:27.720" video="mainVideo-science" id="subtitle"]] +[[!template text="""you can open an issue about it;""" start="00:16:30.240" video="mainVideo-science" id="subtitle"]] +[[!template text="""I will be very active. Thank you.""" start="00:16:31.840" video="mainVideo-science" id="subtitle"]] + +Captioner: hannah Questions or comments? Please e-mail [vidianosgiannitsis@gmail.com](mailto:vidianosgiannitsis@gmail.com?subject=Comment%20for%20EmacsConf%202022%20science%3A%20Writing%20and%20organizing%20literature%20notes%20for%20scientific%20writing) diff --git a/2022/info/science-before.md b/2022/info/science-before.md index 63de5ea4..fefffd46 100644 --- a/2022/info/science-before.md +++ b/2022/info/science-before.md @@ -3,15 +3,15 @@ In this talk, Vidianos Giannitsis shares how he uses Org Roam, org-noter, and ze The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="science"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect stroke-width="3" x="164" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 3:50- 3:55 Short hyperlinks to Python docs</title> <rect x="643" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(648,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect stroke-width="3" x="164" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] -Format: 17-min talk followed by live Q&A (<https://emacsconf.org/current/science/room>) +Format: 17-min talk followed by live Q&A (done) Etherpad: <https://pad.emacsconf.org/2022-science> Discuss on IRC: [#emacsconf-gen](https://chat.emacsconf.org/?join=emacsconf,emacsconf-gen) -Status: Q&A open for participation -<div>Times in different timezones:</div><div class="times" start="2022-12-03T15:45:00Z" end="2022-12-03T16:05:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~10:45 AM - 11:05 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~9:45 AM - 10:05 AM CST (US/Central)<br />Saturday, Dec 3 2022, ~8:45 AM - 9:05 AM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~7:45 AM - 8:05 AM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~3:45 PM - 4:05 PM UTC <br />Saturday, Dec 3 2022, ~4:45 PM - 5:05 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~5:45 PM - 6:05 PM EET (Europe/Athens)<br />Saturday, Dec 3 2022, ~9:15 PM - 9:35 PM IST (Asia/Kolkata)<br />Saturday, Dec 3 2022, ~11:45 PM - 12:05 AM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~12:45 AM - 1:05 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/gen/">Find out how to watch and participate</a></div> +Status: Q&A finished, IRC and pad will be archived on this page + [[!template id="vid" vidid="science-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-science--writing-and-organizing-literature-notes-for-scientific-writing--vidianos--main.webm" poster="https://media.emacsconf.org/2022/emacsconf-2022-science--writing-and-organizing-literature-notes-for-scientific-writing--vidianos--main.png" captions="""<track label="English" kind="captions" srclang="en" src="/2022/captions/emacsconf-2022-science--writing-and-organizing-literature-notes-for-scientific-writing--vidianos--main.vtt" default />""" size="121M" duration="16:45" other_resources="""[Download --main.webm (121MB)](https://media.emacsconf.org/2022/emacsconf-2022-science--writing-and-organizing-literature-notes-for-scientific-writing--vidianos--main.webm) diff --git a/2022/info/sqlite-after.md b/2022/info/sqlite-after.md index 5ca6f99c..265cd8f0 100644 --- a/2022/info/sqlite-after.md +++ b/2022/info/sqlite-after.md @@ -4,444 +4,446 @@ <a name="sqlite-mainVideo-transcript"></a> # Transcript -[[!template new="1" text="Hello. I'm Andrew Hyatt. I've been working on Emacs," start="00:00:00.000" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="with Emacs, and to some extent" start="00:00:08.556" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="on Emacs for a while. I've written the WebSockets library" start="00:00:10.540" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and Emacs calc tutorials. I've enjoyed use of" start="00:00:15.273" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="many of everyone's incredible packages." start="00:00:20.046" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="So my thesis for this talk, why I'm giving this talk," start="00:00:24.640" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="is that I'm interested in SQLite." start="00:00:27.133" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I think we should be exploring SQLite for applications" start="00:00:29.061" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="in ways I think the community has shied away from." start="00:00:34.954" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I'd like to introduce the triples package as a way," start="00:00:37.483" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="both easy and with interesting functionality," start="00:00:41.951" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="that will allow us to build extensible databases" start="00:00:47.665" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="in a way that is, I think," start="00:00:49.154" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="a little bit unusual and perhaps compelling, I hope." start="00:00:52.583" video="mainVideo-sqlite" id="subtitle"]] -[[!template new="1" text="So first of all, why SQLite?" start="00:00:56.220" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Why is this good? Well, SQLite is now built into Emacs." start="00:00:59.227" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="So you get a few things out of this when you use it for data." start="00:01:06.080" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="First of all, it's a database." start="00:01:12.217" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's extremely good for data, of course." start="00:01:14.580" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="There's a simplicity to data manipulation" start="00:01:16.370" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="using a database, compared to data manipulation," start="00:01:19.919" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="that is, manipulating data in a text file." start="00:01:22.028" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Text files are really not built for data." start="00:01:25.197" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="So when typically when you need to do this," start="00:01:31.034" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="like I know Org Mode is--" start="00:01:33.140" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="which I'm a huge, huge Org Mode fan--" start="00:01:35.027" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="it's all about sort of data in text." start="00:01:38.117" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It does work, but you certainly would be" start="00:01:41.045" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="hard pressed to make sweeping changes" start="00:01:45.376" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="to your database that is represented in text." start="00:01:47.360" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's just not well suited for this sort of thing." start="00:01:51.954" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It would take a long time," start="00:01:53.061" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="where the speed of SQL is incredibly impressive." start="00:01:54.964" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I think certainly Emacs is not known" start="00:02:00.220" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="for being extremely speedy." start="00:02:04.430" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I think the overuse of text" start="00:02:06.753" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="is part of this. Of course, text and using text," start="00:02:11.906" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="using files has awesome advantages as well." start="00:02:14.614" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I'm really here to talk about" start="00:02:18.468" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="the other side of the coin, right?" start="00:02:20.511" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Everyone can judge" start="00:02:22.718" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="those advantages and disadvantages" start="00:02:23.962" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and make their own trade-offs," start="00:02:24.646" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but I want to kind of" start="00:02:25.417" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="make the pitch for SQLite." start="00:02:26.021" video="mainVideo-sqlite" id="subtitle"]] -[[!template new="1" text="So let's talk about the triples package." start="00:02:29.870" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="The triples package is a package" start="00:02:32.860" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="that is designed to give you a very generic schema." start="00:02:35.489" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="You don't have to do," start="00:02:40.420" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="for most of the common operations," start="00:02:42.006" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="you don't have to write SQL yourself." start="00:02:43.292" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="A lot of stuff is built in" start="00:02:45.517" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and is based on a very generic schema." start="00:02:47.925" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="That is, it's a single table." start="00:02:51.036" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="That table has, of course, fixed schema." start="00:02:53.840" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It basically has three columns." start="00:02:55.230" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It actually has four columns." start="00:02:57.479" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="In this talk, I'm not going to get into" start="00:03:00.868" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="the fourth column and why, but it's useful." start="00:03:01.194" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="So the three columns are subject, predicate," start="00:03:04.124" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and object. This is what it's related to" start="00:03:07.711" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="what we call an RDF format." start="00:03:10.362" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="These things basically describe a link." start="00:03:13.909" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="The link is from the subject to the object." start="00:03:17.140" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="The link type is a predicate." start="00:03:20.008" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="That sounds overly theoretical," start="00:03:23.956" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but the point is that you can describe" start="00:03:26.086" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="a lot of things with this format." start="00:03:28.033" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="You probably describe everything with it." start="00:03:32.006" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's very simple because the schema is fixed." start="00:03:33.330" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's only this kind of data. That means" start="00:03:39.227" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="for your application, you define a schema" start="00:03:42.774" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="in subject, predicate, object format." start="00:03:44.140" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="That defines what data you can use," start="00:03:47.327" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="what types there are, what properties they have," start="00:03:50.073" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="how you can use the system," start="00:03:56.070" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and what is legal to do. And this is stored as data." start="00:03:57.215" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I think as Lisp people," start="00:04:01.007" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I think we're all very onboard" start="00:04:03.891" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="with the fact that you have a simple way" start="00:04:07.540" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="to express everything, and you don't have these" start="00:04:13.913" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="two systems. In this way," start="00:04:17.660" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="you don't have to have code as a system." start="00:04:18.925" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Do you have to load code to use the triples package" start="00:04:20.872" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="to make sure your schema is obeyed?" start="00:04:24.826" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="No, it's all just built in to this database." start="00:04:27.917" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I'll describe this. As I said," start="00:04:35.214" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="it's a little bit abstract right now," start="00:04:37.037" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but it will become a lot clearer" start="00:04:39.860" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="when we go through an example," start="00:04:42.049" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="which we're going to do now." start="00:04:46.779" video="mainVideo-sqlite" id="subtitle"]] -[[!template new="1" text="As an exercise, let's create Emacs bookmarks," start="00:04:50.209" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="which basically are three things:" start="00:04:56.660" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="a name, a file, and an annotation." start="00:04:57.346" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I may be missing out on functionality." start="00:05:01.039" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Of course, everything in Emacs," start="00:05:02.365" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="everything has lots and lots of functionality," start="00:05:04.773" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but let's just start with this simple thing." start="00:05:05.140" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="First of all, we're going to open up a database." start="00:05:08.050" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Pretty simple." start="00:05:11.100" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I think there's nothing to explain there." start="00:05:12.104" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="But here on this line that I'm on right now," start="00:05:15.015" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="we are saying, okay, there's going to be" start="00:05:19.107" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="a type called bookmark." start="00:05:21.433" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's going to have the following properties." start="00:05:24.840" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="First, a file, which is unique and a string." start="00:05:26.827" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="The second is an annotation," start="00:05:29.179" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="which is again unique and a string." start="00:05:31.765" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Then we're going to have another type called named." start="00:05:34.318" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="First of all, why is it named as part of bookmark?" start="00:05:37.865" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="As I'll get into, it's interesting" start="00:05:39.809" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="when you start sharing this database" start="00:05:45.563" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="with other things, not just bookmarks, but other types." start="00:05:48.512" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Bookmarks are very similar to many other things" start="00:05:51.366" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="that you might want to expand into." start="00:05:54.617" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Those other things have names," start="00:05:56.724" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but they're not bookmarks." start="00:05:57.087" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's nice to separate these concerns out" start="00:05:58.270" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and just have another type called named," start="00:06:04.124" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="which just basically has a name." start="00:06:08.373" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="We can execute this." start="00:06:12.780" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's not interesting to look at these." start="00:06:15.747" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="that is not all that useful for anything," start="00:06:21.440" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It outputs something" start="00:06:21.799" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but that's okay. What's done is, actually," start="00:06:25.908" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="it's created a database" start="00:06:28.015" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and it's populated it with the schema." start="00:06:32.263" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="We can look at this." start="00:06:34.046" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="We won't go through all of this" start="00:06:41.479" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="because it's a little bit too much" start="00:06:43.603" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="for a short presentation like this," start="00:06:44.189" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but you could see that there's something here" start="00:06:46.037" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="that's like, oh, we have a subject bookmark." start="00:06:48.186" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="We have a property base/type." start="00:06:52.500" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="That just means that there's a property" start="00:06:56.032" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="that's defined by the base." start="00:06:58.879" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="This means this is from the triples package itself." start="00:07:00.563" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's not some other package." start="00:07:02.249" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Third is, what is the type of this object?" start="00:07:08.940" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's a schema. This thing could be many types." start="00:07:11.526" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="As I said, if you have a--" start="00:07:17.060" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="we haven't seen an example yet," start="00:07:19.151" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but if you have a bookmark," start="00:07:20.236" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="it's going to have a name type" start="00:07:21.100" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and a bookmark type." start="00:07:23.687" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Everything is multi-typed" start="00:07:25.695" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and that's kind of a feature" start="00:07:26.720" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="of this kind of storage system." start="00:07:28.147" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I'm not going to go through everything," start="00:07:32.138" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but you can see it's all there in triples," start="00:07:33.140" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="the whole schema, everything we just did." start="00:07:35.866" video="mainVideo-sqlite" id="subtitle"]] -[[!template new="1" text="Let's create a bookmark. Again," start="00:07:40.740" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="we're going to connect to our database" start="00:07:42.646" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and we're going to basically set" start="00:07:46.998" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="an entire subject." start="00:07:49.247" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="The subject is, it's basically like an entity." start="00:07:52.553" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="We're going to define a whole entity" start="00:07:54.240" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="or you could refer to it as an object." start="00:07:56.106" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="That's a perfectly fine way to look at it, I think." start="00:08:00.677" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's going to have some identifier." start="00:08:03.910" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="That identifier could be anything." start="00:08:04.357" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It doesn't have to be a string." start="00:08:06.724" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It could really be anything, but we're going" start="00:08:07.432" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="to give it a string called emacs-init." start="00:08:09.260" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It does not matter what this identifier is," start="00:08:11.370" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="at least for our purposes." start="00:08:13.299" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It does matter when you're linking to it," start="00:08:17.809" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but I think nothing that I'm about to show you." start="00:08:19.915" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="This could truly be anything" start="00:08:22.264" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="because it has a separate name." start="00:08:25.831" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I'm giving it a name here, which is init." start="00:08:28.180" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I'm just specifying the named type here" start="00:08:32.133" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and I'm specifying the bookmark type here" start="00:08:34.918" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and its values. We're going to do that." start="00:08:38.048" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Now, if we look, we see everything we saw before," start="00:08:43.220" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but now we have subject emacs-init." start="00:08:47.770" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It has a type and it's named." start="00:08:52.247" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="We also see the same thing two lines down." start="00:08:55.974" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="This type is also a bookmark," start="00:08:57.220" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but the name is init in the named/name," start="00:08:58.265" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="which is like the type is name, named," start="00:09:02.820" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and the property is name. It's init." start="00:09:05.967" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="As you can see, this is just" start="00:09:08.753" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="how everything looks." start="00:09:12.662" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's pretty straightforward" start="00:09:16.332" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and you can retrieve it." start="00:09:18.357" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Now, we're looking at the database," start="00:09:19.319" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but you don't really have to" start="00:09:21.604" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="look at the database for... In fact," start="00:09:22.690" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I think we're done looking" start="00:09:23.219" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="at the triples format," start="00:09:24.223" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="because I think it's very simple." start="00:09:25.106" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="You've already got the hang of it, I think." start="00:09:29.719" video="mainVideo-sqlite" id="subtitle"]] -[[!template new="1" text="Let's retrieve that just to make sure, yes," start="00:09:31.366" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="we can retrieve it." start="00:09:33.070" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="We're going to retrieve it and say, okay," start="00:09:37.981" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="what do we get when we load the emacs-init subject?" start="00:09:38.248" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Well, we get a plist of all of its properties," start="00:09:43.287" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="which then you can use in your application." start="00:09:48.698" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="There's many more ways to retrieve" start="00:09:55.631" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and there's many more ways to save." start="00:09:57.456" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="In fact, I think the way I did it here" start="00:09:59.380" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="with set subject is probably not" start="00:10:01.905" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="the right way to do it most of the time." start="00:10:04.016" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's usually because it'll erase everything." start="00:10:06.782" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's only really to be used when" start="00:10:08.128" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="you're sure you control all the data," start="00:10:13.740" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but you're never sure because there could be" start="00:10:15.711" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="other packages that are also using this database," start="00:10:16.400" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="they could have their own data." start="00:10:19.611" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="You don't want to erase" start="00:10:20.696" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="all the other Emacs init subject data." start="00:10:21.343" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="In this case, we did because" start="00:10:25.015" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="we are confident it was a new entity," start="00:10:27.700" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but in most cases, the right thing to do is" start="00:10:30.811" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="just set it by type. Just say," start="00:10:31.336" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="we're just going to set the bookmark type," start="00:10:34.290" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="which is... The properties are this," start="00:10:36.677" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and then the name type" start="00:10:37.223" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and the properties are that." start="00:10:38.105" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="That's a way that you could do things." start="00:10:42.815" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="There's also many retrieval types." start="00:10:44.900" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="The retrieval types:" start="00:10:48.527" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="you can retrieve by a number of different ways," start="00:10:53.756" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="which I'm not going to get into," start="00:10:56.404" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but you can read about in either the source" start="00:10:58.870" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="or the readme in the package." start="00:11:01.242" video="mainVideo-sqlite" id="subtitle"]] -[[!template new="1" text="We have backlinks as well." start="00:11:10.034" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Let me explain what backlinks are." start="00:11:14.540" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="There's another feature of the triples." start="00:11:15.863" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="As I mentioned, these things" start="00:11:17.173" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="can be thought about as links," start="00:11:19.861" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but what could be a link in one direction" start="00:11:21.850" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="could also be a link in the other direction," start="00:11:23.798" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and we basically get this for free." start="00:11:25.805" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Here's an example where we are again" start="00:11:28.396" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="connecting toward bookmark. Here we're going to" start="00:11:33.808" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="add a new type called tagged." start="00:11:35.753" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="We're going to give everything in tags." start="00:11:38.224" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Here we're saying, okay, there's a type called tagged" start="00:11:41.614" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and it has a property called tags." start="00:11:45.525" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="This is not unique, so it's a list basically." start="00:11:49.235" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's a list of string." start="00:11:52.060" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="There also is a type called tag." start="00:11:54.327" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="This is for things that are tags themselves." start="00:11:58.676" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Then it has a type called numbers" start="00:12:01.403" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and it has what we call a virtual reversed property." start="00:12:06.128" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's virtual because it's not actually stored." start="00:12:18.004" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="We just compute it by reversing" start="00:12:21.076" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="the subject and the object." start="00:12:23.742" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="This is on tagged tags. When we query this," start="00:12:24.307" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="we can just say, okay," start="00:12:29.260" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="what are all the subjects" start="00:12:32.007" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="that have tagged tags of me, the tag?" start="00:12:33.269" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="In fact, let me demonstrate that for you." start="00:12:38.860" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="We're going to set the type on emacs-init." start="00:12:39.366" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="We're going to add the "tagged" type." start="00:12:42.140" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="This is the alternate way of setting data" start="00:12:45.071" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="that I mentioned." start="00:12:47.018" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="This won't erase anything else." start="00:12:48.740" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="We're just adding something here." start="00:12:49.925" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="We're adding this type "tagged"" start="00:12:51.753" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="to our previous bookmark emacs-init." start="00:12:54.743" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="We're going to add emacs and config" start="00:12:59.954" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="as the tags. We're going to then" start="00:13:01.059" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="set emacs as a tag and config as a tag." start="00:13:06.867" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="That just lets us have this virtual property." start="00:13:11.096" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="You have to do something." start="00:13:15.386" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="You can't get it out of thin air." start="00:13:16.390" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="The design decision we've made is:" start="00:13:18.734" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="you at least need to tag it" start="00:13:23.427" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="before you get the free property." start="00:13:25.509" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="What you should see... Let's try it out." start="00:13:32.660" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="We got the subject config," start="00:13:35.632" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="which we've set no data on." start="00:13:36.038" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="You can tell we're not sending any data." start="00:13:37.262" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="If I get that subject, the result is that" start="00:13:40.669" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="it says its members are emacs-init." start="00:13:44.821" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="That's what a virtual reverse property." start="00:13:46.069" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="As we tag more things, this just" start="00:13:49.879" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="continues to work because it's just doing" start="00:13:53.607" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="a SQL query here." start="00:13:55.152" video="mainVideo-sqlite" id="subtitle"]] -[[!template new="1" text="Besides showing off the backlinks function," start="00:13:59.380" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="this also shows off the general way" start="00:14:01.986" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="you can have extensible entities." start="00:14:04.176" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="That is, it's possible that someone writes" start="00:14:07.864" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="a bookmarks package that stores everything" start="00:14:09.392" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="in a database, in the triples database," start="00:14:13.063" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but then someone else can come and say," start="00:14:18.055" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="okay, I'm going to define my own types" start="00:14:21.522" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="that's meant to work with this database," start="00:14:23.591" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="just like someone could do what I did here," start="00:14:25.740" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="just to add simple tagging." start="00:14:28.508" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's very easy to do." start="00:14:30.875" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="This stuff is not that easy to do otherwise." start="00:14:32.901" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="To do this in Lisp, I would say it's a little awkward." start="00:14:35.932" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="With databases, again, it's not only possible," start="00:14:38.962" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="it's relatively trivial," start="00:14:42.674" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="especially with this kind of database." start="00:14:43.499" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="The benefit is it's super easy to work with." start="00:14:49.829" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="With this kind of generic database," start="00:14:53.057" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="the drawback is it's not all that efficient" start="00:14:56.042" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="as a special purpose table" start="00:15:00.312" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="that is really built for efficiencies." start="00:15:04.382" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="A lot of times you have to do multiple lookups" start="00:15:06.192" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and things like that." start="00:15:08.820" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Again, it's a trade-off for various things." start="00:15:09.443" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="As you can see, this is like" start="00:15:11.986" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="one database for everything." start="00:15:19.901" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="That means that we don't have to all" start="00:15:22.067" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="contribute to one giant database." start="00:15:29.179" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="All the packages that use triples," start="00:15:31.945" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="it doesn't have to be one database," start="00:15:33.053" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but it's cool if it does." start="00:15:35.180" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I don't know what I want to happen" start="00:15:37.087" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="or what I expect to happen," start="00:15:39.394" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but I think an interesting property is that" start="00:15:41.220" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="this is a way for lots of data to live together" start="00:15:43.069" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and build off each other in ways that I think" start="00:15:45.400" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="are hard to do with other forms of table layouts" start="00:15:49.607" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and things like that." start="00:15:55.780" video="mainVideo-sqlite" id="subtitle"]] -[[!template new="1" text="Let's talk about a use of it," start="00:15:57.008" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="which is the EKG package." start="00:15:59.654" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="The EKG package is something I've written" start="00:16:02.644" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="to demonstrate the triples library" start="00:16:04.590" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and use it for something I think is interesting," start="00:16:07.780" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="which is personal knowledge management systems" start="00:16:09.410" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="of the same type, of the same genre" start="00:16:12.420" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="that Org Roam is," start="00:16:14.385" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but with different design decisions." start="00:16:15.287" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I'll show it in action for a little bit." start="00:16:18.434" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Let's just look at... it's all tag-based," start="00:16:26.532" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="same kind of tags we saw before" start="00:16:28.360" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="when we were playing around" start="00:16:30.186" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="with the bookmarks example application," start="00:16:32.233" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="What I want to show is: I can look at a tag." start="00:16:35.224" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but everything here is..." start="00:16:35.560" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I could see notes with that tag." start="00:16:37.476" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Everything you see here is in the database," start="00:16:40.288" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="no files involved." start="00:16:42.633" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="All of this is just a thing" start="00:16:43.199" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="that's an entire object, the entire string." start="00:16:46.405" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It works. It has tags." start="00:16:49.391" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="You can see not only this tag," start="00:16:56.082" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but all the other tags associated with it" start="00:16:59.230" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and their notes." start="00:17:01.355" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's kind of an interesting way to do things." start="00:17:04.860" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="When you capture it, I think it's interesting." start="00:17:10.256" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="There's a lot of interesting design elements here." start="00:17:12.260" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="This tags thing is not part of the buffer." start="00:17:22.276" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's not like Org Roam." start="00:17:25.819" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="You see here in this other tags," start="00:17:28.752" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="these are things I've imported from Org Roam." start="00:17:29.117" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="This is why they look like they do." start="00:17:31.925" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="They have their own titles because" start="00:17:32.231" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I just wrote them all in Org Roam." start="00:17:34.020" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="What it looks like, really, for these notes" start="00:17:37.890" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="is that it's just text." start="00:17:39.458" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="You really don't have to bother with this metadata." start="00:17:41.024" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="If I want another tag like pancakes," start="00:17:44.616" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I can just add it here. Again, these tags" start="00:17:46.283" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="will turn into data, triple data." start="00:17:53.655" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="The text is just a triple date[??] as well," start="00:17:56.740" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but different to triple data." start="00:17:59.826" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="All these things are like that." start="00:18:01.970" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="You can open up any of these things, et cetera." start="00:18:08.363" video="mainVideo-sqlite" id="subtitle"]] -[[!template new="1" text="I think the interesting thing here" start="00:18:12.772" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="is to see the code. It's not super interesting" start="00:18:16.683" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="to look at code for too long," start="00:18:22.597" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but we don't have that long." start="00:18:23.980" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Whenever we connect--" start="00:18:26.992" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I just want to point out a few things." start="00:18:27.655" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Whenever we connect, we have a schema." start="00:18:28.820" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="We just do this. Every time we connect," start="00:18:29.206" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="we just make sure it has the right schema." start="00:18:31.176" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="This way, the user is up to date." start="00:18:33.164" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="This schema just looks exactly like" start="00:18:36.315" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="stuff I showed you in the triples" start="00:18:38.301" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="when we were looking at bookmarks." start="00:18:41.688" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's not complicated." start="00:18:43.533" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I even have stuff here with people" start="00:18:45.100" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="to use this as a person database." start="00:18:48.211" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I haven't figured out how I'm going to use this yet," start="00:18:51.539" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but you can see just to do this," start="00:18:52.105" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="it's really trivial and it's pretty easy." start="00:18:54.274" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Let's show a few other things," start="00:19:01.914" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="like getting all the tags." start="00:19:02.499" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Here, we could just say," start="00:19:05.845" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="let's get the subjects of type tag." start="00:19:07.991" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="We have all the triples," start="00:19:10.380" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="all the ones that are of type tag," start="00:19:12.903" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="all the things that have a subject." start="00:19:15.850" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="All the subjects that have links," start="00:19:18.778" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="that have this type, this tag in it," start="00:19:22.146" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="we can return them all." start="00:19:28.338" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="of all these objects." start="00:19:30.426" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Basically, it just gives you a list" start="00:19:30.660" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Again, you can think of these things as objects." start="00:19:32.675" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="All the objects of type tag," start="00:19:33.244" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="we'll just get them all. Super, super simple." start="00:19:35.434" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Triples gives you this functionality" start="00:19:37.321" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="out of the box. It's not that complicated." start="00:19:39.586" video="mainVideo-sqlite" id="subtitle"]] -[[!template new="1" text="What I would like to show," start="00:19:43.780" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and that shows my thesis for this whole talk," start="00:19:45.168" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="is this rename tag. Now, think about" start="00:19:49.519" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="how you would rename a tag in Org Roam" start="00:19:52.786" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="or anything where the tag is part of the files." start="00:19:54.151" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="It's like how you would re-tag everything" start="00:20:03.014" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="in Org Mode. It's complicated and error-prone" start="00:20:05.280" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and slow. This is anything," start="00:20:09.870" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="this is instantaneous and super easy." start="00:20:12.557" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Look, that's it. There's not that many places" start="00:20:14.764" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="for an error to live here." start="00:20:17.256" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="One thing I would like to point out" start="00:20:19.540" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="is that we are doing direct," start="00:20:21.508" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="not everything has to go through" start="00:20:23.338" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="the triples package. Maybe it should," start="00:20:24.321" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but the triples package is a fixed format," start="00:20:28.293" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="which is why it's okay--" start="00:20:31.660" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="whether it's a good idea, I'm not sure," start="00:20:33.907" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="but it's okay for client packages" start="00:20:34.070" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="to just directly manipulate the tables." start="00:20:39.864" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Here, we're just doing it just to" start="00:20:42.834" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="update all the tags" start="00:20:43.938" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="and then remove and set types" start="00:20:45.266" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="so that the correct thing happens." start="00:20:47.892" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="As you can see, it's super, super simple." start="00:20:49.120" video="mainVideo-sqlite" id="subtitle"]] -[[!template new="1" text="I think this proves my thesis about" start="00:20:52.147" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="the advantages of applications with SQLite." start="00:20:55.375" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Thank you for listening." start="00:21:01.527" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I hope this puts ideas in your minds" start="00:21:02.431" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="about taking advantage of this functionality." start="00:21:05.877" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="I hope to see more things" start="00:21:09.828" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="using the triples library" start="00:21:11.936" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="or otherwise that take advantage of this." start="00:21:12.180" video="mainVideo-sqlite" id="subtitle"]] -[[!template text="Thank you for your time." start="00:21:16.018" video="mainVideo-sqlite" id="subtitle"]] +[[!template new="1" text="""Hello. I'm Andrew Hyatt. I've been working on Emacs,""" start="00:00:00.000" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""with Emacs, and to some extent""" start="00:00:08.556" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""on Emacs for a while. I've written the WebSockets library""" start="00:00:10.540" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and Emacs calc tutorials. I've enjoyed use of""" start="00:00:15.273" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""many of everyone's incredible packages.""" start="00:00:20.046" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""So my thesis for this talk, why I'm giving this talk,""" start="00:00:24.640" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""is that I'm interested in SQLite.""" start="00:00:27.133" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I think we should be exploring SQLite for applications""" start="00:00:29.061" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""in ways I think the community has shied away from.""" start="00:00:34.954" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I'd like to introduce the triples package as a way,""" start="00:00:37.483" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""both easy and with interesting functionality,""" start="00:00:41.951" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""that will allow us to build extensible databases""" start="00:00:47.665" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""in a way that is, I think,""" start="00:00:49.154" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""a little bit unusual and perhaps compelling, I hope.""" start="00:00:52.583" video="mainVideo-sqlite" id="subtitle"]] +[[!template new="1" text="""So first of all, why SQLite?""" start="00:00:56.220" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Why is this good? Well, SQLite is now built into Emacs.""" start="00:00:59.227" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""So you get a few things out of this when you use it for data.""" start="00:01:06.080" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""First of all, it's a database.""" start="00:01:12.217" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's extremely good for data, of course.""" start="00:01:14.580" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""There's a simplicity to data manipulation""" start="00:01:16.370" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""using a database, compared to data manipulation,""" start="00:01:19.919" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""that is, manipulating data in a text file.""" start="00:01:22.028" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Text files are really not built for data.""" start="00:01:25.197" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""So when typically when you need to do this,""" start="00:01:31.034" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""like I know Org Mode is--""" start="00:01:33.140" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""which I'm a huge, huge Org Mode fan--""" start="00:01:35.027" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""it's all about sort of data in text.""" start="00:01:38.117" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It does work, but you certainly would be""" start="00:01:41.045" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""hard pressed to make sweeping changes""" start="00:01:45.376" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""to your database that is represented in text.""" start="00:01:47.360" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's just not well suited for this sort of thing.""" start="00:01:51.954" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It would take a long time,""" start="00:01:53.061" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""where the speed of SQL is incredibly impressive.""" start="00:01:54.964" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I think certainly Emacs is not known""" start="00:02:00.220" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""for being extremely speedy.""" start="00:02:04.430" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I think the overuse of text""" start="00:02:06.753" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""is part of this. Of course, text and using text,""" start="00:02:11.906" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""using files has awesome advantages as well.""" start="00:02:14.614" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I'm really here to talk about""" start="00:02:18.468" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""the other side of the coin, right?""" start="00:02:20.511" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Everyone can judge""" start="00:02:22.718" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""those advantages and disadvantages""" start="00:02:23.962" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and make their own trade-offs,""" start="00:02:24.646" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but I want to kind of""" start="00:02:25.417" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""make the pitch for SQLite.""" start="00:02:26.021" video="mainVideo-sqlite" id="subtitle"]] +[[!template new="1" text="""So let's talk about the triples package.""" start="00:02:29.870" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""The triples package is a package""" start="00:02:32.860" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""that is designed to give you a very generic schema.""" start="00:02:35.489" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""You don't have to do,""" start="00:02:40.420" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""for most of the common operations,""" start="00:02:42.006" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""you don't have to write SQL yourself.""" start="00:02:43.292" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""A lot of stuff is built in""" start="00:02:45.517" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and is based on a very generic schema.""" start="00:02:47.925" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""That is, it's a single table.""" start="00:02:51.036" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""That table has, of course, fixed schema.""" start="00:02:53.840" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It basically has three columns.""" start="00:02:55.230" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It actually has four columns.""" start="00:02:57.479" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""In this talk, I'm not going to get into""" start="00:03:00.868" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""the fourth column and why, but it's useful.""" start="00:03:01.194" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""So the three columns are subject, predicate,""" start="00:03:04.124" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and object. This is what it's related to""" start="00:03:07.711" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""what we call an RDF format.""" start="00:03:10.362" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""These things basically describe a link.""" start="00:03:13.909" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""The link is from the subject to the object.""" start="00:03:17.140" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""The link type is a predicate.""" start="00:03:20.008" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""That sounds overly theoretical,""" start="00:03:23.956" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but the point is that you can describe""" start="00:03:26.086" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""a lot of things with this format.""" start="00:03:28.033" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""You probably describe everything with it.""" start="00:03:32.006" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's very simple because the schema is fixed.""" start="00:03:33.330" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's only this kind of data. That means""" start="00:03:39.227" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""for your application, you define a schema""" start="00:03:42.774" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""in subject, predicate, object format.""" start="00:03:44.140" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""That defines what data you can use,""" start="00:03:47.327" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""what types there are, what properties they have,""" start="00:03:50.073" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""how you can use the system,""" start="00:03:56.070" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and what is legal to do. And this is stored as data.""" start="00:03:57.215" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I think as Lisp people,""" start="00:04:01.007" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I think we're all very onboard""" start="00:04:03.891" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""with the fact that you have a simple way""" start="00:04:07.540" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""to express everything, and you don't have these""" start="00:04:13.913" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""two systems. In this way,""" start="00:04:17.660" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""you don't have to have code as a system.""" start="00:04:18.925" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Do you have to load code to use the triples package""" start="00:04:20.872" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""to make sure your schema is obeyed?""" start="00:04:24.826" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""No, it's all just built in to this database.""" start="00:04:27.917" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I'll describe this. As I said,""" start="00:04:35.214" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""it's a little bit abstract right now,""" start="00:04:37.037" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but it will become a lot clearer""" start="00:04:39.860" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""when we go through an example,""" start="00:04:42.049" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""which we're going to do now.""" start="00:04:46.779" video="mainVideo-sqlite" id="subtitle"]] +[[!template new="1" text="""As an exercise, let's create Emacs bookmarks,""" start="00:04:50.209" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""which basically are three things:""" start="00:04:56.660" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""a name, a file, and an annotation.""" start="00:04:57.346" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I may be missing out on functionality.""" start="00:05:01.039" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Of course, everything in Emacs,""" start="00:05:02.365" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""everything has lots and lots of functionality,""" start="00:05:04.773" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but let's just start with this simple thing.""" start="00:05:05.140" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""First of all, we're going to open up a database.""" start="00:05:08.050" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Pretty simple.""" start="00:05:11.100" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I think there's nothing to explain there.""" start="00:05:12.104" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""But here on this line that I'm on right now,""" start="00:05:15.015" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""we are saying, okay, there's going to be""" start="00:05:19.107" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""a type called bookmark.""" start="00:05:21.433" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's going to have the following properties.""" start="00:05:24.840" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""First, a file, which is unique and a string.""" start="00:05:26.827" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""The second is an annotation,""" start="00:05:29.179" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""which is again unique and a string.""" start="00:05:31.765" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Then we're going to have another type called named.""" start="00:05:34.318" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""First of all, why is it named as part of bookmark?""" start="00:05:37.865" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""As I'll get into, it's interesting""" start="00:05:39.809" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""when you start sharing this database""" start="00:05:45.563" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""with other things, not just bookmarks, but other types.""" start="00:05:48.512" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Bookmarks are very similar to many other things""" start="00:05:51.366" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""that you might want to expand into.""" start="00:05:54.617" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Those other things have names,""" start="00:05:56.724" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but they're not bookmarks.""" start="00:05:57.087" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's nice to separate these concerns out""" start="00:05:58.270" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and just have another type called named,""" start="00:06:04.124" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""which just basically has a name.""" start="00:06:08.373" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""We can execute this.""" start="00:06:12.780" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's not interesting to look at these.""" start="00:06:15.747" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""that is not all that useful for anything,""" start="00:06:21.440" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It outputs something""" start="00:06:21.799" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but that's okay. What's done is, actually,""" start="00:06:25.908" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""it's created a database""" start="00:06:28.015" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and it's populated it with the schema.""" start="00:06:32.263" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""We can look at this.""" start="00:06:34.046" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""We won't go through all of this""" start="00:06:41.479" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""because it's a little bit too much""" start="00:06:43.603" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""for a short presentation like this,""" start="00:06:44.189" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but you could see that there's something here""" start="00:06:46.037" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""that's like, oh, we have a subject bookmark.""" start="00:06:48.186" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""We have a property base/type.""" start="00:06:52.500" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""That just means that there's a property""" start="00:06:56.032" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""that's defined by the base.""" start="00:06:58.879" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""This means this is from the triples package itself.""" start="00:07:00.563" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's not some other package.""" start="00:07:02.249" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Third is, what is the type of this object?""" start="00:07:08.940" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's a schema. This thing could be many types.""" start="00:07:11.526" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""As I said, if you have a--""" start="00:07:17.060" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""we haven't seen an example yet,""" start="00:07:19.151" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but if you have a bookmark,""" start="00:07:20.236" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""it's going to have a name type""" start="00:07:21.100" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and a bookmark type.""" start="00:07:23.687" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Everything is multi-typed""" start="00:07:25.695" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and that's kind of a feature""" start="00:07:26.720" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""of this kind of storage system.""" start="00:07:28.147" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I'm not going to go through everything,""" start="00:07:32.138" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but you can see it's all there in triples,""" start="00:07:33.140" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""the whole schema, everything we just did.""" start="00:07:35.866" video="mainVideo-sqlite" id="subtitle"]] +[[!template new="1" text="""Let's create a bookmark. Again,""" start="00:07:40.740" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""we're going to connect to our database""" start="00:07:42.646" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and we're going to basically set""" start="00:07:46.998" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""an entire subject.""" start="00:07:49.247" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""The subject is, it's basically like an entity.""" start="00:07:52.553" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""We're going to define a whole entity""" start="00:07:54.240" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""or you could refer to it as an object.""" start="00:07:56.106" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""That's a perfectly fine way to look at it, I think.""" start="00:08:00.677" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's going to have some identifier.""" start="00:08:03.910" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""That identifier could be anything.""" start="00:08:04.357" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It doesn't have to be a string.""" start="00:08:06.724" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It could really be anything, but we're going""" start="00:08:07.432" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""to give it a string called emacs-init.""" start="00:08:09.260" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It does not matter what this identifier is,""" start="00:08:11.370" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""at least for our purposes.""" start="00:08:13.299" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It does matter when you're linking to it,""" start="00:08:17.809" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but I think nothing that I'm about to show you.""" start="00:08:19.915" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""This could truly be anything""" start="00:08:22.264" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""because it has a separate name.""" start="00:08:25.831" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I'm giving it a name here, which is init.""" start="00:08:28.180" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I'm just specifying the named type here""" start="00:08:32.133" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and I'm specifying the bookmark type here""" start="00:08:34.918" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and its values. We're going to do that.""" start="00:08:38.048" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Now, if we look, we see everything we saw before,""" start="00:08:43.220" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but now we have subject emacs-init.""" start="00:08:47.770" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It has a type and it's named.""" start="00:08:52.247" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""We also see the same thing two lines down.""" start="00:08:55.974" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""This type is also a bookmark,""" start="00:08:57.220" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but the name is init in the named/name,""" start="00:08:58.265" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""which is like the type is name, named,""" start="00:09:02.820" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and the property is name. It's init.""" start="00:09:05.967" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""As you can see, this is just""" start="00:09:08.753" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""how everything looks.""" start="00:09:12.662" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's pretty straightforward""" start="00:09:16.332" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and you can retrieve it.""" start="00:09:18.357" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Now, we're looking at the database,""" start="00:09:19.319" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but you don't really have to""" start="00:09:21.604" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""look at the database for... In fact,""" start="00:09:22.690" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I think we're done looking""" start="00:09:23.219" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""at the triples format,""" start="00:09:24.223" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""because I think it's very simple.""" start="00:09:25.106" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""You've already got the hang of it, I think.""" start="00:09:29.719" video="mainVideo-sqlite" id="subtitle"]] +[[!template new="1" text="""Let's retrieve that just to make sure, yes,""" start="00:09:31.366" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""we can retrieve it.""" start="00:09:33.070" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""We're going to retrieve it and say, okay,""" start="00:09:37.981" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""what do we get when we load the emacs-init subject?""" start="00:09:38.248" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Well, we get a plist of all of its properties,""" start="00:09:43.287" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""which then you can use in your application.""" start="00:09:48.698" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""There's many more ways to retrieve""" start="00:09:55.631" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and there's many more ways to save.""" start="00:09:57.456" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""In fact, I think the way I did it here""" start="00:09:59.380" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""with set subject is probably not""" start="00:10:01.905" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""the right way to do it most of the time.""" start="00:10:04.016" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's usually because it'll erase everything.""" start="00:10:06.782" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's only really to be used when""" start="00:10:08.128" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""you're sure you control all the data,""" start="00:10:13.740" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but you're never sure because there could be""" start="00:10:15.711" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""other packages that are also using this database,""" start="00:10:16.400" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""they could have their own data.""" start="00:10:19.611" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""You don't want to erase""" start="00:10:20.696" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""all the other Emacs init subject data.""" start="00:10:21.343" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""In this case, we did because""" start="00:10:25.015" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""we are confident it was a new entity,""" start="00:10:27.700" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but in most cases, the right thing to do is""" start="00:10:30.811" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""just set it by type. Just say,""" start="00:10:31.336" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""we're just going to set the bookmark type,""" start="00:10:34.290" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""which is... The properties are this,""" start="00:10:36.677" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and then the name type""" start="00:10:37.223" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and the properties are that.""" start="00:10:38.105" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""That's a way that you could do things.""" start="00:10:42.815" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""There's also many retrieval types.""" start="00:10:44.900" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""The retrieval types:""" start="00:10:48.527" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""you can retrieve by a number of different ways,""" start="00:10:53.756" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""which I'm not going to get into,""" start="00:10:56.404" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but you can read about in either the source""" start="00:10:58.870" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""or the readme in the package.""" start="00:11:01.242" video="mainVideo-sqlite" id="subtitle"]] +[[!template new="1" text="""We have backlinks as well.""" start="00:11:10.034" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Let me explain what backlinks are.""" start="00:11:14.540" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""There's another feature of the triples.""" start="00:11:15.863" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""As I mentioned, these things""" start="00:11:17.173" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""can be thought about as links,""" start="00:11:19.861" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but what could be a link in one direction""" start="00:11:21.850" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""could also be a link in the other direction,""" start="00:11:23.798" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and we basically get this for free.""" start="00:11:25.805" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Here's an example where we are again""" start="00:11:28.396" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""connecting toward bookmark. Here we're going to""" start="00:11:33.808" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""add a new type called tagged.""" start="00:11:35.753" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""We're going to give everything in tags.""" start="00:11:38.224" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Here we're saying, okay, there's a type called tagged""" start="00:11:41.614" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and it has a property called tags.""" start="00:11:45.525" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""This is not unique, so it's a list basically.""" start="00:11:49.235" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's a list of string.""" start="00:11:52.060" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""There also is a type called tag.""" start="00:11:54.327" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""This is for things that are tags themselves.""" start="00:11:58.676" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Then it has a type called numbers""" start="00:12:01.403" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and it has what we call a virtual reversed property.""" start="00:12:06.128" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's virtual because it's not actually stored.""" start="00:12:18.004" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""We just compute it by reversing""" start="00:12:21.076" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""the subject and the object.""" start="00:12:23.742" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""This is on tagged tags. When we query this,""" start="00:12:24.307" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""we can just say, okay,""" start="00:12:29.260" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""what are all the subjects""" start="00:12:32.007" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""that have tagged tags of me, the tag?""" start="00:12:33.269" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""In fact, let me demonstrate that for you.""" start="00:12:38.860" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""We're going to set the type on emacs-init.""" start="00:12:39.366" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""We're going to add the "tagged" type.""" start="00:12:42.140" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""This is the alternate way of setting data""" start="00:12:45.071" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""that I mentioned.""" start="00:12:47.018" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""This won't erase anything else.""" start="00:12:48.740" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""We're just adding something here.""" start="00:12:49.925" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""We're adding this type "tagged"""" start="00:12:51.753" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""to our previous bookmark emacs-init.""" start="00:12:54.743" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""We're going to add emacs and config""" start="00:12:59.954" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""as the tags. We're going to then""" start="00:13:01.059" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""set emacs as a tag and config as a tag.""" start="00:13:06.867" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""That just lets us have this virtual property.""" start="00:13:11.096" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""You have to do something.""" start="00:13:15.386" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""You can't get it out of thin air.""" start="00:13:16.390" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""The design decision we've made is:""" start="00:13:18.734" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""you at least need to tag it""" start="00:13:23.427" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""before you get the free property.""" start="00:13:25.509" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""What you should see... Let's try it out.""" start="00:13:32.660" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""We got the subject config,""" start="00:13:35.632" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""which we've set no data on.""" start="00:13:36.038" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""You can tell we're not sending any data.""" start="00:13:37.262" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""If I get that subject, the result is that""" start="00:13:40.669" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""it says its members are emacs-init.""" start="00:13:44.821" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""That's what a virtual reverse property.""" start="00:13:46.069" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""As we tag more things, this just""" start="00:13:49.879" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""continues to work because it's just doing""" start="00:13:53.607" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""a SQL query here.""" start="00:13:55.152" video="mainVideo-sqlite" id="subtitle"]] +[[!template new="1" text="""Besides showing off the backlinks function,""" start="00:13:59.380" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""this also shows off the general way""" start="00:14:01.986" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""you can have extensible entities.""" start="00:14:04.176" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""That is, it's possible that someone writes""" start="00:14:07.864" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""a bookmarks package that stores everything""" start="00:14:09.392" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""in a database, in the triples database,""" start="00:14:13.063" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but then someone else can come and say,""" start="00:14:18.055" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""okay, I'm going to define my own types""" start="00:14:21.522" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""that's meant to work with this database,""" start="00:14:23.591" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""just like someone could do what I did here,""" start="00:14:25.740" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""just to add simple tagging.""" start="00:14:28.508" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's very easy to do.""" start="00:14:30.875" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""This stuff is not that easy to do otherwise.""" start="00:14:32.901" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""To do this in Lisp, I would say it's a little awkward.""" start="00:14:35.932" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""With databases, again, it's not only possible,""" start="00:14:38.962" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""it's relatively trivial,""" start="00:14:42.674" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""especially with this kind of database.""" start="00:14:43.499" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""The benefit is it's super easy to work with.""" start="00:14:49.829" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""With this kind of generic database,""" start="00:14:53.057" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""the drawback is it's not all that efficient""" start="00:14:56.042" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""as a special purpose table""" start="00:15:00.312" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""that is really built for efficiencies.""" start="00:15:04.382" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""A lot of times you have to do multiple lookups""" start="00:15:06.192" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and things like that.""" start="00:15:08.820" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Again, it's a trade-off for various things.""" start="00:15:09.443" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""As you can see, this is like""" start="00:15:11.986" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""one database for everything.""" start="00:15:19.901" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""That means that we don't have to all""" start="00:15:22.067" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""contribute to one giant database.""" start="00:15:29.179" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""All the packages that use triples,""" start="00:15:31.945" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""it doesn't have to be one database,""" start="00:15:33.053" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but it's cool if it does.""" start="00:15:35.180" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I don't know what I want to happen""" start="00:15:37.087" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""or what I expect to happen,""" start="00:15:39.394" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but I think an interesting property is that""" start="00:15:41.220" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""this is a way for lots of data to live together""" start="00:15:43.069" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and build off each other in ways that I think""" start="00:15:45.400" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""are hard to do with other forms of table layouts""" start="00:15:49.607" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and things like that.""" start="00:15:55.780" video="mainVideo-sqlite" id="subtitle"]] +[[!template new="1" text="""Let's talk about a use of it,""" start="00:15:57.008" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""which is the EKG package.""" start="00:15:59.654" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""The EKG package is something I've written""" start="00:16:02.644" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""to demonstrate the triples library""" start="00:16:04.590" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and use it for something I think is interesting,""" start="00:16:07.780" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""which is personal knowledge management systems""" start="00:16:09.410" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""of the same type, of the same genre""" start="00:16:12.420" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""that Org Roam is,""" start="00:16:14.385" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but with different design decisions.""" start="00:16:15.287" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I'll show it in action for a little bit.""" start="00:16:18.434" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Let's just look at... it's all tag-based,""" start="00:16:26.532" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""same kind of tags we saw before""" start="00:16:28.360" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""when we were playing around""" start="00:16:30.186" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""with the bookmarks example application,""" start="00:16:32.233" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""What I want to show is: I can look at a tag.""" start="00:16:35.224" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but everything here is...""" start="00:16:35.560" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I could see notes with that tag.""" start="00:16:37.476" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Everything you see here is in the database,""" start="00:16:40.288" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""no files involved.""" start="00:16:42.633" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""All of this is just a thing""" start="00:16:43.199" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""that's an entire object, the entire string.""" start="00:16:46.405" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It works. It has tags.""" start="00:16:49.391" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""You can see not only this tag,""" start="00:16:56.082" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but all the other tags associated with it""" start="00:16:59.230" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and their notes.""" start="00:17:01.355" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's kind of an interesting way to do things.""" start="00:17:04.860" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""When you capture it, I think it's interesting.""" start="00:17:10.256" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""There's a lot of interesting design elements here.""" start="00:17:12.260" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""This tags thing is not part of the buffer.""" start="00:17:22.276" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's not like Org Roam.""" start="00:17:25.819" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""You see here in this other tags,""" start="00:17:28.752" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""these are things I've imported from Org Roam.""" start="00:17:29.117" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""This is why they look like they do.""" start="00:17:31.925" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""They have their own titles because""" start="00:17:32.231" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I just wrote them all in Org Roam.""" start="00:17:34.020" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""What it looks like, really, for these notes""" start="00:17:37.890" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""is that it's just text.""" start="00:17:39.458" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""You really don't have to bother with this metadata.""" start="00:17:41.024" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""If I want another tag like pancakes,""" start="00:17:44.616" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I can just add it here. Again, these tags""" start="00:17:46.283" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""will turn into data, triple data.""" start="00:17:53.655" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""The text is just a triple date[??] as well,""" start="00:17:56.740" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but different to triple data.""" start="00:17:59.826" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""All these things are like that.""" start="00:18:01.970" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""You can open up any of these things, et cetera.""" start="00:18:08.363" video="mainVideo-sqlite" id="subtitle"]] +[[!template new="1" text="""I think the interesting thing here""" start="00:18:12.772" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""is to see the code. It's not super interesting""" start="00:18:16.683" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""to look at code for too long,""" start="00:18:22.597" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but we don't have that long.""" start="00:18:23.980" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Whenever we connect--""" start="00:18:26.992" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I just want to point out a few things.""" start="00:18:27.655" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Whenever we connect, we have a schema.""" start="00:18:28.820" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""We just do this. Every time we connect,""" start="00:18:29.206" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""we just make sure it has the right schema.""" start="00:18:31.176" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""This way, the user is up to date.""" start="00:18:33.164" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""This schema just looks exactly like""" start="00:18:36.315" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""stuff I showed you in the triples""" start="00:18:38.301" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""when we were looking at bookmarks.""" start="00:18:41.688" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's not complicated.""" start="00:18:43.533" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I even have stuff here with people""" start="00:18:45.100" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""to use this as a person database.""" start="00:18:48.211" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I haven't figured out how I'm going to use this yet,""" start="00:18:51.539" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but you can see just to do this,""" start="00:18:52.105" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""it's really trivial and it's pretty easy.""" start="00:18:54.274" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Let's show a few other things,""" start="00:19:01.914" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""like getting all the tags.""" start="00:19:02.499" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Here, we could just say,""" start="00:19:05.845" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""let's get the subjects of type tag.""" start="00:19:07.991" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""We have all the triples,""" start="00:19:10.380" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""all the ones that are of type tag,""" start="00:19:12.903" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""all the things that have a subject.""" start="00:19:15.850" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""All the subjects that have links,""" start="00:19:18.778" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""that have this type, this tag in it,""" start="00:19:22.146" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""we can return them all.""" start="00:19:28.338" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""of all these objects.""" start="00:19:30.426" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Basically, it just gives you a list""" start="00:19:30.660" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Again, you can think of these things as objects.""" start="00:19:32.675" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""All the objects of type tag,""" start="00:19:33.244" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""we'll just get them all. Super, super simple.""" start="00:19:35.434" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Triples gives you this functionality""" start="00:19:37.321" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""out of the box. It's not that complicated.""" start="00:19:39.586" video="mainVideo-sqlite" id="subtitle"]] +[[!template new="1" text="""What I would like to show,""" start="00:19:43.780" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and that shows my thesis for this whole talk,""" start="00:19:45.168" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""is this rename tag. Now, think about""" start="00:19:49.519" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""how you would rename a tag in Org Roam""" start="00:19:52.786" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""or anything where the tag is part of the files.""" start="00:19:54.151" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""It's like how you would re-tag everything""" start="00:20:03.014" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""in Org Mode. It's complicated and error-prone""" start="00:20:05.280" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and slow. This is anything,""" start="00:20:09.870" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""this is instantaneous and super easy.""" start="00:20:12.557" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Look, that's it. There's not that many places""" start="00:20:14.764" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""for an error to live here.""" start="00:20:17.256" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""One thing I would like to point out""" start="00:20:19.540" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""is that we are doing direct,""" start="00:20:21.508" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""not everything has to go through""" start="00:20:23.338" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""the triples package. Maybe it should,""" start="00:20:24.321" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but the triples package is a fixed format,""" start="00:20:28.293" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""which is why it's okay--""" start="00:20:31.660" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""whether it's a good idea, I'm not sure,""" start="00:20:33.907" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""but it's okay for client packages""" start="00:20:34.070" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""to just directly manipulate the tables.""" start="00:20:39.864" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Here, we're just doing it just to""" start="00:20:42.834" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""update all the tags""" start="00:20:43.938" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""and then remove and set types""" start="00:20:45.266" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""so that the correct thing happens.""" start="00:20:47.892" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""As you can see, it's super, super simple.""" start="00:20:49.120" video="mainVideo-sqlite" id="subtitle"]] +[[!template new="1" text="""I think this proves my thesis about""" start="00:20:52.147" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""the advantages of applications with SQLite.""" start="00:20:55.375" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Thank you for listening.""" start="00:21:01.527" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I hope this puts ideas in your minds""" start="00:21:02.431" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""about taking advantage of this functionality.""" start="00:21:05.877" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""I hope to see more things""" start="00:21:09.828" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""using the triples library""" start="00:21:11.936" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""or otherwise that take advantage of this.""" start="00:21:12.180" video="mainVideo-sqlite" id="subtitle"]] +[[!template text="""Thank you for your time.""" start="00:21:16.018" video="mainVideo-sqlite" id="subtitle"]] + +Captioner: sachac Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202022%20sqlite%3A%20Using%20SQLite%20as%20a%20data%20source%3A%20a%20framework%20and%20an%20example) diff --git a/2022/info/sqlite-before.md b/2022/info/sqlite-before.md index 5d9a8f37..2527c7f7 100644 --- a/2022/info/sqlite-before.md +++ b/2022/info/sqlite-before.md @@ -3,15 +3,15 @@ In this talk, Andrew Hyatt shows how to use SQLite to store and retrieve informa The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="sqlite"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect stroke-width="3" x="376" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 3:50- 3:55 Short hyperlinks to Python docs</title> <rect x="643" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(648,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect stroke-width="3" x="376" y="75" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] -Format: 22-min talk followed by live Q&A (<https://emacsconf.org/current/sqlite/room>) +Format: 22-min talk followed by live Q&A (done) Etherpad: <https://pad.emacsconf.org/2022-sqlite> Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Q&A open for participation -<div>Times in different timezones:</div><div class="times" start="2022-12-03T18:00:00Z" end="2022-12-03T18:25:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~1:00 PM - 1:25 PM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~12:00 PM - 12:25 PM CST (US/Central)<br />Saturday, Dec 3 2022, ~11:00 AM - 11:25 AM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~10:00 AM - 10:25 AM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~6:00 PM - 6:25 PM UTC <br />Saturday, Dec 3 2022, ~7:00 PM - 7:25 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~8:00 PM - 8:25 PM EET (Europe/Athens)<br />Saturday, Dec 3 2022, ~11:30 PM - 11:55 PM IST (Asia/Kolkata)<br />Sunday, Dec 4 2022, ~2:00 AM - 2:25 AM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~3:00 AM - 3:25 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/dev/">Find out how to watch and participate</a></div> +Status: Q&A finished, IRC and pad will be archived on this page + [[!template id="vid" vidid="sqlite-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-sqlite--using-sqlite-as-a-data-source-a-framework-and-an-example--andrew-hyatt--main.webm" poster="https://media.emacsconf.org/2022/emacsconf-2022-sqlite--using-sqlite-as-a-data-source-a-framework-and-an-example--andrew-hyatt--main.png" captions="""<track label="English" kind="captions" srclang="en" src="/2022/captions/emacsconf-2022-sqlite--using-sqlite-as-a-data-source-a-framework-and-an-example--andrew-hyatt--main.vtt" default />""" size="69M" duration="21:24" other_resources="""[Download --main.webm (69MB)](https://media.emacsconf.org/2022/emacsconf-2022-sqlite--using-sqlite-as-a-data-source-a-framework-and-an-example--andrew-hyatt--main.webm) diff --git a/2022/info/sun-close-before.md b/2022/info/sun-close-before.md index 0db7019a..46c028fd 100644 --- a/2022/info/sun-close-before.md +++ b/2022/info/sun-close-before.md @@ -1,7 +1,7 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="sun-close"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect stroke-width="3" x="737" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect stroke-width="3" x="737" y="15" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/sun-open-before.md b/2022/info/sun-open-before.md index f927b1d1..14799e05 100644 --- a/2022/info/sun-open-before.md +++ b/2022/info/sun-open-before.md @@ -1,7 +1,7 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="sun-open"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect stroke-width="3" x="0" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect stroke-width="3" x="0" y="15" opacity="0.8" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/survey-before.md b/2022/info/survey-before.md index d624e633..6a350c9a 100644 --- a/2022/info/survey-before.md +++ b/2022/info/survey-before.md @@ -1,7 +1,7 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="survey"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect stroke-width="3" x="7" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect stroke-width="3" x="7" y="15" opacity="0.8" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect x="454" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/treesitter-after.md b/2022/info/treesitter-after.md index d7268f8c..0aafa488 100644 --- a/2022/info/treesitter-after.md +++ b/2022/info/treesitter-after.md @@ -247,6 +247,9 @@ [[!template text="""being powered by Tree-sitter.""" start="00:10:59.640" video="mainVideo-treesitter" id="subtitle"]] [[!template text="""And that's a wrap from me. Thank you.""" start="00:11:01.560" video="mainVideo-treesitter" id="subtitle"]] + + +Captioner: sachac Questions or comments? Please e-mail [mail@meain.io](mailto:mail@meain.io?subject=Comment%20for%20EmacsConf%202022%20treesitter%3A%20Tree-sitter%20beyond%20syntax%20highlighting) diff --git a/2022/info/treesitter-before.md b/2022/info/treesitter-before.md index d9c7ea3b..d5828dad 100644 --- a/2022/info/treesitter-before.md +++ b/2022/info/treesitter-before.md @@ -3,7 +3,7 @@ In this talk, Abin Simon shares many ways in which Tree-sitter can help improve The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="treesitter"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(578,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect stroke-width="3" x="94" y="75" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect stroke-width="3" x="94" y="75" opacity="0.8" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect x="227" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] diff --git a/2022/info/wayland-after.md b/2022/info/wayland-after.md index c9712bb0..c4ee53cd 100644 --- a/2022/info/wayland-after.md +++ b/2022/info/wayland-after.md @@ -1,6 +1,162 @@ <!-- Automatically generated by emacsconf-publish-after-page --> +<a name="wayland-mainVideo-transcript"></a> +# Transcript + +[[!template text="""Hello EmacsConf and hello fellow Emacs fans.""" start="00:00:00.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""My name is Michael Bauer, and I'm from Germany.""" start="00:00:08.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""I'm gonna talk to you about "Why and how Emacs""" start="00:00:10.920" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""should become a Wayland compositor."""" start="00:00:13.440" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""And it already kinda is a Wayland compositor.""" start="00:00:17.200" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""This talk is composed by Wayland and Emacs.""" start="00:00:21.740" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""If I'm talking about a Wayland compositor""" start="00:00:25.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""or Emacs as Wayland compositor,""" start="00:00:26.840" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""I mean it in the sense that""" start="00:00:29.360" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""EXWM is an X window manager. I hope you know EXWM.""" start="00:00:30.440" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""So, why?""" start="00:00:36.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""Emacs can do Wayland now, that was a stopper""" start="00:00:41.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""before, and now it's solved with `pgtk` branch.""" start="00:00:44.120" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""It makes the Emacs toolbox bigger,""" start="00:00:49.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""which is always a good thing.""" start="00:00:53.240" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""And the cool thing about Wayland, which is not""" start="00:00:55.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""possible under X is, it can run standalone""" start="00:00:58.440" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""on the Linux kernel interface, or nested under X,""" start="00:01:02.280" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""or even nested under Wayland.""" start="00:01:06.840" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""The compositor features of Emacs doesn't mean""" start="00:01:09.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""it has to take over the whole output.""" start="00:01:13.840" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""It can use them, even if it's just like""" start="00:01:16.960" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""a normal window or normal program.""" start="00:01:20.560" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""And last reason is,""" start="00:01:23.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""I want to keep living inside Emacs""" start="00:01:25.120" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""and Wayland is the future, apparently.""" start="00:01:27.240" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""EXWM use case is the first use case.""" start="00:01:31.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""You take a Wayland surface and put it inside""" start="00:01:35.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""an Emacs window. You see it right below.""" start="00:01:38.400" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""The video of me is a Wayland surface,""" start="00:01:41.520" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""and it's inside an Emacs window managed by Emacs.""" start="00:01:45.880" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""Emacs does the input, and the clipboard handling,""" start="00:01:50.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""and can insert itself here, and do great things.""" start="00:01:53.480" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""And it's a possibility to Lispify the Linux desktop,""" start="00:01:59.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""as Emacs Lispifies the command line.""" start="00:02:03.200" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""The other use case is the XWidget use case.""" start="00:02:08.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""I don't know if you know XWidgets.""" start="00:02:12.960" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""It's embedded X windows inside Emacs.""" start="00:02:17.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""There's a web browser available in Emacs.""" start="00:02:19.720" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""With Wayland, you could embed anything that can""" start="00:02:24.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""create a Wayland surface like video, web, or 3D.""" start="00:02:27.520" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""Think OpenGL, something like""" start="00:02:32.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""EmacsGL would be possible.""" start="00:02:34.880" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""And we wouldn't have just images like we have so far.""" start="00:02:38.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""So, how to implement this Wayland compositor?""" start="00:02:46.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""I'm going to tell you how I did it,""" start="00:02:50.560" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""or I did this demo I'm showing you right now.""" start="00:02:52.560" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""First of all, how does Wayland work?""" start="00:02:57.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""Wayland is a protocol in XML.""" start="00:03:00.680" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""It's a server and client, and they share a set of""" start="00:03:04.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""objects, and the objects have methods.""" start="00:03:11.120" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""They are specified in the protocol,""" start="00:03:13.960" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""and Wayland also says how the server""" start="00:03:16.120" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""and client talk to each other.""" start="00:03:24.080" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""First blocker for Emacs becoming a Wayland""" start="00:03:25.720" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""compositor is that Emacs and Wayland both have""" start="00:03:33.440" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""their own event loop, and you can't merge them too.""" start="00:03:37.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""But you don't have to merge them""" start="00:03:41.880" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""because you can just make Emacs speak Wayland.""" start="00:03:45.800" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""So, Emacs becomes a Wayland client,""" start="00:03:48.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""and there's an extra server Emacs is talking to.""" start="00:03:50.040" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""So, we need a minimal Wayland server that does all""" start="00:03:53.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""the stuff Emacs can't do and do the rest in Emacs.""" start="00:03:59.160" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""---The minimal Wayland server, I did it in wlroots.""" start="00:04:03.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""That's the library behind Sway. I think it's""" start="00:04:07.800" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""the Wayland library to do stuff like this.""" start="00:04:13.040" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""I implemented four different things to make it work.""" start="00:04:20.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""It's these three letter acronyms on the left.""" start="00:04:26.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""It's Emacs, Wayland, and then it's a server,""" start="00:04:30.680" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""a client, a protocol, and buffers.""" start="00:04:34.520" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""The server is written in C and it's mostly tinywl.""" start="00:04:38.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""It's the example of wlroots,""" start="00:04:44.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""and it's around 1000 lines of code.""" start="00:04:46.280" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""ewc, the Wayland client in Emacs,""" start="00:04:52.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""is the thing I'm most proud of.""" start="00:04:54.960" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""It's 300 lines of code, and it is a""" start="00:04:58.560" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""fully featured Wayland client in Emacs.""" start="00:05:02.120" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""With this, Emacs can speak Wayland,""" start="00:05:08.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""and then I implemented Emacs Wayland protocol.""" start="00:05:11.640" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""It more or less allows Emacs to become a Wayland""" start="00:05:18.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""window manager, so it's not actually the compositor.""" start="00:05:21.280" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""The compositor stays in C, but Emacs is""" start="00:05:24.640" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""now a Wayland window manager!""" start="00:05:27.680" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""And the last thing is Emacs Wayland buffers.""" start="00:05:31.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""It's the window manager part.""" start="00:05:34.520" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""It's around 500 lines of code,""" start="00:05:35.880" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""and it does the buffer management inside""" start="00:05:38.440" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""Emacs windows, or floating right like you see me""" start="00:05:41.680" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""now floating on the right.""" start="00:05:45.680" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""It works, but it is still buggy,""" start="00:05:48.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""and it is also missing input handling,""" start="00:05:51.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""so there's more code to come for this to work.""" start="00:05:54.320" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""Some caveats about this approach.""" start="00:06:01.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""wlroots is around 60 kilo LoCs (Line of Code)""" start="00:06:05.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""and in active development.""" start="00:06:09.640" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""They have like a slogan 60 kilo locs of code""" start="00:06:12.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""you had to write anyway to make a Wayland""" start="00:06:16.640" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""compositor. And no, you don't have to write it.""" start="00:06:19.760" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""But I still remember when it was like 50 kilo locs,""" start="00:06:22.520" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""and now it's 60. And it's like a moving target.""" start="00:06:25.840" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""I think it could be quite a lot of work""" start="00:06:29.680" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""to keep up with it.""" start="00:06:32.480" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""Yeah, it could be quite a bit of work.""" start="00:06:34.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""Some windows don't like to keep the aspect ratios.""" start="00:06:41.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""You tell them and you have to crop them.""" start="00:06:46.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""And the interface I use in wlroots for doing this,""" start="00:06:49.560" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""`wlr_scene`, can't do cropping yet,""" start="00:06:53.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""so this doesn't work.""" start="00:06:57.280" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""Another problem is with GTK.""" start="00:07:01.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""Once Wayland is enabled and it stays on.""" start="00:07:03.240" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""This doesn't make sense.""" start="00:07:11.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""Okay, if you kill the Wayland server,""" start="00:07:12.560" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""GTK kills Emacs, that's not a good thing.""" start="00:07:15.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""And it's still a bit of work and fussing needed""" start="00:07:18.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""to get this to work reliably.""" start="00:07:21.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""It's quite buggy right now.""" start="00:07:23.640" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""And that brings me to my call to action.""" start="00:07:26.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""I think making Emacs Wayland capable is""" start="00:07:30.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""a further step to make an Emacs OS.""" start="00:07:34.440" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""It gains output and input handling.""" start="00:07:39.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""Output handling is already there,""" start="00:07:41.360" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""input handling is still missing,""" start="00:07:44.120" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""but Emacs can manage monitors, outputs,""" start="00:07:45.760" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""different frames if it's like nested,""" start="00:07:49.720" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""And inputs, keyboards, simulation keys,""" start="00:07:53.040" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""stuff like that.""" start="00:07:57.080" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""We could use it in more ways for Emacs display, maybe.""" start="00:07:58.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""Wayland just manages simple pixel buffers,""" start="00:08:02.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""so it's a protocol for managing pixel buffers.""" start="00:08:05.720" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""And in a sense, we could go back to""" start="00:08:09.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""the old X ways and maybe even ditch GTK.""" start="00:08:12.560" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""I don't know, but why need it?""" start="00:08:15.560" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""We can composite without it.""" start="00:08:18.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""Let's make buffer menus, buffer world, buffer.""" start="00:08:20.600" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""Emacs Wayland protocol, like I did it,""" start="00:08:27.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""allows a very concise design, and it allows""" start="00:08:29.040" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""to improve on the EXWM code base.""" start="00:08:34.040" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""And I wrote KISS style because EXWM has""" start="00:08:38.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""workspace management integrated.""" start="00:08:41.840" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""I don't think that's needed, like Emacs does it.""" start="00:08:45.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""Why do you have to do something extra?""" start="00:08:50.600" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""So why do it?""" start="00:08:53.640" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""To finish the call to action,""" start="00:08:56.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""if this is the thing you want to see in Emacs,""" start="00:09:00.040" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""maybe you want to get involved, have some ideas,""" start="00:09:03.280" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""so we could discuss it.""" start="00:09:06.600" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""I'm looking forward to discuss with you""" start="00:09:10.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""and hear your questions and ideas.""" start="00:09:14.960" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""I want to say a big thank you to the""" start="00:09:21.000" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""organizers of EmacsConf and the other speakers""" start="00:09:24.200" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""for making this event possible.""" start="00:09:26.600" video="mainVideo-wayland" id="subtitle"]] +[[!template text="""Thank you, and see you.""" start="00:09:29.000" video="mainVideo-wayland" id="subtitle"]] + Questions or comments? Please e-mail [perma-curious@posteo.de](mailto:perma-curious@posteo.de?subject=Comment%20for%20EmacsConf%202022%20wayland%3A%20Emacs%20should%20become%20a%20Wayland%20compositor) diff --git a/2022/info/wayland-before.md b/2022/info/wayland-before.md index dbf16cc3..d01071f5 100644 --- a/2022/info/wayland-before.md +++ b/2022/info/wayland-before.md @@ -1,15 +1,15 @@ <!-- Automatically generated by emacsconf-publish-before-page --> The following image shows where the talk is in the schedule for Sat 2022-12-03. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="wayland"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect stroke-width="3" x="227" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 3:50- 3:55 Short hyperlinks to Python docs</title> <rect x="643" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(648,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Saturday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Saturday</text> <a href="/2022/talks/sat-open" title="Saturday opening remarks" data-slug="sat-open"> <title> 9:00- 9:05 Saturday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-open</text></g></a> <a href="/2022/talks/journalism" title="Emacs journalism (or everything's a nail if you hit it with Emacs)" data-slug="journalism"> <title> 9:05- 9:25 Emacs journalism (or everything's a nail if you hit it with Emacs)</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> journalism</text></g></a> <a href="/2022/talks/school" title="Back to school with Emacs" data-slug="school"> <title> 9:45- 9:55 Back to school with Emacs</title> <rect x="70" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(83,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> school</text></g></a> <a href="/2022/talks/handwritten" title="How to incorporate handwritten notes into Emacs Orgmode" data-slug="handwritten"> <title> 10:05-10:15 How to incorporate handwritten notes into Emacs Orgmode</title> <rect x="101" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(114,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> handwritten</text></g></a> <a href="/2022/talks/science" title="Writing and organizing literature notes for scientific writing" data-slug="science"> <title> 10:45-11:05 Writing and organizing literature notes for scientific writing</title> <rect x="164" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(193,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> science</text></g></a> <a href="/2022/talks/buddy" title="The Emacs Buddy initiative" data-slug="buddy"> <title> 11:25-11:35 The Emacs Buddy initiative</title> <rect x="227" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(240,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buddy</text></g></a> <a href="/2022/talks/meetups" title="Attending and organizing Emacs meetups" data-slug="meetups"> <title> 1:00- 1:20 Attending and organizing Emacs meetups</title> <rect x="376" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(405,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> meetups</text></g></a> <a href="/2022/talks/buttons" title="Linking personal info with Hyperbole implicit buttons" data-slug="buttons"> <title> 1:40- 1:55 Linking personal info with Hyperbole implicit buttons</title> <rect x="439" y="15" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(460,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> buttons</text></g></a> <a href="/2022/talks/realestate" title="Real estate and Org table formulas" data-slug="realestate"> <title> 2:15- 2:40 Real estate and Org table formulas</title> <rect x="494" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(531,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> realestate</text></g></a> <a href="/2022/talks/health" title="Health data journaling and visualization with Org Mode and gnuplot" data-slug="health"> <title> 3:00- 3:25 Health data journaling and visualization with Org Mode and gnuplot</title> <rect x="564" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(601,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> health</text></g></a> <a href="/2022/talks/jupyter" title="Edit live Jupyter notebook cells with Emacs" data-slug="jupyter"> <title> 3:45- 4:05 Edit live Jupyter notebook cells with Emacs</title> <rect x="635" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(664,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> jupyter</text></g></a> <a href="/2022/talks/sat-close" title="Saturday closing remarks" data-slug="sat-close"> <title> 4:50- 4:55 Saturday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(742,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sat-close</text></g></a> <a href="/2022/talks/treesitter" title="Tree-sitter beyond syntax highlighting" data-slug="treesitter"> <title> 10:00-10:15 Tree-sitter beyond syntax highlighting</title> <rect x="94" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(115,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> treesitter</text></g></a> <a href="/2022/talks/lspbridge" title="lsp-bridge: a smooth-as-butter asynchronous LSP client" data-slug="lspbridge"> <title> 10:25-10:45 lsp-bridge: a smooth-as-butter asynchronous LSP client</title> <rect x="133" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(162,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> lspbridge</text></g></a> <a href="/2022/talks/asmblox" title="asm-blox: a game based on WebAssembly that no one asked for" data-slug="asmblox"> <title> 10:55-11:15 asm-blox: a game based on WebAssembly that no one asked for</title> <rect x="180" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(209,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> asmblox</text></g></a> <a href="/2022/talks/wayland" title="Emacs should become a Wayland compositor" data-slug="wayland"> <title> 11:25-11:35 Emacs should become a Wayland compositor</title> <rect stroke-width="3" x="227" y="75" opacity="0.8" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(240,133)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> wayland</text></g></a> <a href="/2022/talks/sqlite" title="Using SQLite as a data source: a framework and an example" data-slug="sqlite"> <title> 1:00- 1:25 Using SQLite as a data source: a framework and an example</title> <rect x="376" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(413,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sqlite</text></g></a> <a href="/2022/talks/mail" title="Revisiting the anatomy of Emacs mail user agents" data-slug="mail"> <title> 1:50- 2:30 Revisiting the anatomy of Emacs mail user agents</title> <rect x="454" y="75" opacity="0.5" width="62" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(514,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> mail</text></g></a> <a href="/2022/talks/maint" title="Maintaining the Maintainers: Attribution as an Economic Model for Open Source" data-slug="maint"> <title> 2:50- 3:10 Maintaining the Maintainers: Attribution as an Economic Model for Open Source</title> <rect x="549" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(578,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> maint</text></g></a> <a href="/2022/talks/eev" title="Bidirectional links with eev" data-slug="eev"> <title> 3:35- 3:40 Bidirectional links with eev</title> <rect x="619" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(624,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eev</text></g></a> <a href="/2022/talks/haskell" title="Haskell code exploration with Emacs" data-slug="haskell"> <title> 4:05- 4:35 Haskell code exploration with Emacs</title> <rect x="666" y="75" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(711,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> haskell</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] -Format: 10-min talk followed by live Q&A (<https://emacsconf.org/current/wayland/room>) +Format: 10-min talk followed by live Q&A (done) Etherpad: <https://pad.emacsconf.org/2022-wayland> Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Q&A open for participation -<div>Times in different timezones:</div><div class="times" start="2022-12-03T16:25:00Z" end="2022-12-03T16:35:00Z"><div class="conf-time">Saturday, Dec 3 2022, ~11:25 AM - 11:35 AM EST (US/Eastern)</div><div class="others"><div>which is the same as:</div>Saturday, Dec 3 2022, ~10:25 AM - 10:35 AM CST (US/Central)<br />Saturday, Dec 3 2022, ~9:25 AM - 9:35 AM MST (US/Mountain)<br />Saturday, Dec 3 2022, ~8:25 AM - 8:35 AM PST (US/Pacific)<br />Saturday, Dec 3 2022, ~4:25 PM - 4:35 PM UTC <br />Saturday, Dec 3 2022, ~5:25 PM - 5:35 PM CET (Europe/Paris)<br />Saturday, Dec 3 2022, ~6:25 PM - 6:35 PM EET (Europe/Athens)<br />Saturday, Dec 3 2022, ~9:55 PM - 10:05 PM IST (Asia/Kolkata)<br />Sunday, Dec 4 2022, ~12:25 AM - 12:35 AM +08 (Asia/Singapore)<br />Sunday, Dec 4 2022, ~1:25 AM - 1:35 AM JST (Asia/Tokyo)</div></div><div><a href="/2022/watch/dev/">Find out how to watch and participate</a></div> +Status: Q&A finished, IRC and pad will be archived on this page + [[!template id="vid" vidid="wayland-mainVideo" src="https://media.emacsconf.org/2022/emacsconf-2022-wayland--emacs-should-become-a-wayland-compositor--michael-bauer--main.webm" poster="https://media.emacsconf.org/2022/emacsconf-2022-wayland--emacs-should-become-a-wayland-compositor--michael-bauer--main.png" ${captions} size="17M" duration="9:39" other_resources="""[Download --main.webm (15MB)](https://media.emacsconf.org/2022/emacsconf-2022-wayland--emacs-should-become-a-wayland-compositor--michael-bauer--main.webm) diff --git a/2022/info/workflows-before.md b/2022/info/workflows-before.md index 527d270f..64ea78eb 100644 --- a/2022/info/workflows-before.md +++ b/2022/info/workflows-before.md @@ -3,7 +3,7 @@ In this talk, George Mauer demonstrates several ways that Org Mode can help peop The following image shows where the talk is in the schedule for Sun 2022-12-04. Solid lines show talks with Q&A via BigBlueButton. Dashed lines show talks with Q&A via IRC or Etherpad.<div class="schedule-in-context schedule-svg-container" data-slug="workflows"> -<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect stroke-width="3" x="454" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> +<svg width="800" height="150" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <title> Schedule for Sunday</title> <rect width="800" height="150" x="0" y="0" fill="white"></rect> <text font-size="10" fill="black" y="12" x="3"> Sunday</text> <a href="/2022/talks/sun-open" title="Sunday opening remarks" data-slug="sun-open"> <title> 9:00- 9:05 Sunday opening remarks</title> <rect x="0" y="15" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(5,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-open</text></g></a> <a href="/2022/talks/survey" title="Results of the 2022 Emacs Survey" data-slug="survey"> <title> 9:05- 9:25 Results of the 2022 Emacs Survey</title> <rect x="7" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(36,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> survey</text></g></a> <a href="/2022/talks/orgyear" title="This Year in Org" data-slug="orgyear"> <title> 9:35- 9:45 This Year in Org</title> <rect x="54" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(67,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgyear</text></g></a> <a href="/2022/talks/rolodex" title="Build a Zettelkasten with the Hyperbole Rolodex" data-slug="rolodex"> <title> 9:55-10:20 Build a Zettelkasten with the Hyperbole Rolodex</title> <rect x="86" y="15" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(123,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rolodex</text></g></a> <a href="/2022/talks/orgsuperlinks" title="Linking headings with org-super-links (poor-man's Zettelkasten)" data-slug="orgsuperlinks"> <title> 10:40-10:50 Linking headings with org-super-links (poor-man's Zettelkasten)</title> <rect x="156" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(169,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgsuperlinks</text></g></a> <a href="/2022/talks/orgvm" title="orgvm: a simple HTTP server for org" data-slug="orgvm"> <title> 11:10-11:20 orgvm: a simple HTTP server for org</title> <rect x="203" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(216,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> orgvm</text></g></a> <a href="/2022/talks/hyperorg" title="Powerful productivity with Hyperbole and Org Mode" data-slug="hyperorg"> <title> 1:00- 1:30 Powerful productivity with Hyperbole and Org Mode</title> <rect x="376" y="15" opacity="0.5" width="47" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(421,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> hyperorg</text></g></a> <a href="/2022/talks/workflows" title="Org workflows for developers" data-slug="workflows"> <title> 1:50- 2:15 Org workflows for developers</title> <rect stroke-width="3" x="454" y="15" opacity="0.8" width="39" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(491,73)"> <text font-weight="bold" fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> workflows</text></g></a> <a href="/2022/talks/grail" title="GRAIL---A Generalized Representation and Aggregation of Information Layers" data-slug="grail"> <title> 2:35- 2:55 GRAIL---A Generalized Representation and Aggregation of Information Layers</title> <rect x="525" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(554,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> grail</text></g></a> <a href="/2022/talks/indieweb" title="Putting Org Mode on the Indieweb" data-slug="indieweb"> <title> 3:25- 3:45 Putting Org Mode on the Indieweb</title> <rect x="603" y="15" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(632,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> indieweb</text></g></a> <a href="/2022/talks/devel" title="Emacs development updates" data-slug="devel"> <title> 4:05- 4:15 Emacs development updates</title> <rect x="666" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="5,5,5" fill="peachpuff"></rect> <g transform="translate(679,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> devel</text></g></a> <a href="/2022/talks/fanfare" title="Fanfare for the Common Emacs User" data-slug="fanfare"> <title> 4:25- 4:35 Fanfare for the Common Emacs User</title> <rect x="698" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(711,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> fanfare</text></g></a> <a href="/2022/talks/sun-close" title="Sunday closing remarks" data-slug="sun-close"> <title> 4:50- 5:00 Sunday closing remarks</title> <rect x="737" y="15" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="peachpuff"></rect> <g transform="translate(750,73)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> sun-close</text></g></a> <a href="/2022/talks/rde" title="rde Emacs introduction" data-slug="rde"> <title> 10:00-10:25 rde Emacs introduction</title> <rect x="94" y="75" opacity="0.5" width="39" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(131,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rde</text></g></a> <a href="/2022/talks/justl" title="justl: Driving recipes within Emacs" data-slug="justl"> <title> 10:50-11:05 justl: Driving recipes within Emacs</title> <rect x="172" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(193,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> justl</text></g></a> <a href="/2022/talks/rms" title="What I'd like to see in Emacs" data-slug="rms"> <title> 11:15-11:35 What I'd like to see in Emacs</title> <rect x="211" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(240,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> rms</text></g></a> <a href="/2022/talks/detached" title="Getting detached from Emacs" data-slug="detached"> <title> 1:00- 1:15 Getting detached from Emacs</title> <rect x="376" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(397,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> detached</text></g></a> <a href="/2022/talks/eshell" title="Top 10 reasons why you should be using Eshell" data-slug="eshell"> <title> 1:40- 1:55 Top 10 reasons why you should be using Eshell</title> <rect x="439" y="75" opacity="0.5" width="23" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(460,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> eshell</text></g></a> <a href="/2022/talks/async" title="Emacs was async before async was cool" data-slug="async"> <title> 2:20- 2:40 Emacs was async before async was cool</title> <rect x="501" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(530,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> async</text></g></a> <a href="/2022/talks/dbus" title="The Wheels on D-Bus" data-slug="dbus"> <title> 3:15- 3:35 The Wheels on D-Bus</title> <rect x="588" y="75" opacity="0.5" width="31" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(617,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> dbus</text></g></a> <a href="/2022/talks/localizing" title="Pre-localizing Emacs" data-slug="localizing"> <title> 4:00- 4:10 Pre-localizing Emacs</title> <rect x="658" y="75" opacity="0.5" width="15" height="59" stroke="black" stroke-dasharray="" fill="skyblue"></rect> <g transform="translate(671,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> localizing</text></g></a> <a href="/2022/talks/python" title="Short hyperlinks to Python docs" data-slug="python"> <title> 4:30- 4:35 Short hyperlinks to Python docs</title> <rect x="705" y="75" opacity="0.5" width="7" height="59" stroke="black" stroke-dasharray="5,5,5" fill="skyblue"></rect> <g transform="translate(710,133)"> <text fill="black" x="0" y="0" font-size="10" transform="rotate(-90)"> python</text></g></a> <g transform="translate(0,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 9 AM</text></g> <g transform="translate(94,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 10 AM</text></g> <g transform="translate(188,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 11 AM</text></g> <g transform="translate(282,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 12 PM</text></g> <g transform="translate(376,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 1 PM</text></g> <g transform="translate(470,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 2 PM</text></g> <g transform="translate(564,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 3 PM</text></g> <g transform="translate(658,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 4 PM</text></g> <g transform="translate(752,15)"> <line stroke="darkgray" x1="0" y1="0" x2="0" y2="120"></line> <text fill="black" x="0" y="133" font-size="10" text-anchor="left"> 5 PM</text></g></svg> </div> [[!toc ]] |