[00:00.000 --> 00:12.420] Hello, my name is Jonathan McHugh and I am from Icebreaker and I'm just going to be going [00:12.420 --> 00:19.980] through some of the design decisions in regards to my project as well as express some thoughts [00:19.980 --> 00:30.980] regarding knowledge management and the use of abstract symbols as a way of working with [00:30.980 --> 00:41.340] projects to maximise flow and improve interoperability and reduce the time and costs of expressing [00:41.340 --> 00:50.220] concepts and expectations and desires and unleashing them as actions and what not. [00:50.220 --> 00:58.260] And this is a diagram which I playfully did which just sort of explains some of the facets [00:58.260 --> 01:07.260] with regards to it. Before I really got into coding I had a varied experience with regards to [01:08.180 --> 01:16.980] information society from a wider perspective and one of the things which I found was very useful [01:16.980 --> 01:27.980] for dealing with large information apparatus was to use abstract symbols. I did this for an [01:27.980 --> 01:37.180] association whereby I was collecting different tags and for from DeliciousV which was a social [01:37.180 --> 01:44.660] bookmarking system from back in the day and what I did was the focus on me and tax on me as I [01:44.660 --> 01:49.620] was collecting were getting so large it was getting it would have been uneconomic to use for [01:49.620 --> 01:58.980] instance just the lettering of the terms and it was better to aggregate them and what I did [01:58.980 --> 02:09.780] was make use of the non-alpha numeric characters which formed the which usually on the right hand [02:09.780 --> 02:18.660] side of a keyboard sometimes at the top as well and I found that this was very good for both [02:18.660 --> 02:26.100] demarcating things but it also sort of created more of an impetus regarding how to order things [02:26.180 --> 02:33.060] and the gains from say doing completions was fantastic because you weren't really just cycling [02:33.060 --> 02:38.260] through all the letters of the word to get the the form you wanted but you just sort of smash [02:38.260 --> 02:44.100] in and deal with the the term because you've got an associated character or combination of [02:44.100 --> 02:53.820] characters and one of the things when I really got into programming I started out by really [02:53.860 --> 03:05.020] prioritising things like tech, the documentation system, VIM, the text editor and as well as sort [03:05.020 --> 03:14.020] of using regular expressions by the tooling said as well as AUK and I tried to I tried to use the [03:14.020 --> 03:25.620] existing characters and that I had from the syntax for delineating the the the the terms and [03:25.620 --> 03:30.140] definitions which I was trying to collect in terms of programming but what I found was that it [03:30.140 --> 03:37.860] didn't quite match because the the association which had previously formed my my my my things [03:37.860 --> 03:48.060] were from were from they were dealing with a public affairs politics and cultural activities and [03:48.060 --> 03:59.300] even though it dealt upon the the even though it dealt upon the technology aspects such as peer [03:59.300 --> 04:05.220] to peer or things like that it didn't really delve into it it was really at the kind of so [04:05.220 --> 04:14.260] they're kind of white shirt level in terms of expectations competences and I realised that I [04:14.260 --> 04:23.020] needed something something better suited for what happens within a computer environment and and what [04:23.020 --> 04:29.900] what though what the components are and how they interlace and spent a lot of dog food eating trying [04:29.900 --> 04:36.180] to work out a form so I'm just going to go through some of the aspects with regards to this and I [04:36.180 --> 04:43.260] purposely chose something very abstract but also accessible I chose it abstract because I was aware [04:43.260 --> 04:49.420] with regards to semantic business process management which was an attempt which is an approach to [04:49.420 --> 04:58.380] mitigate groups from different language communities with with with common terms and for me an abstract [04:58.620 --> 05:07.380] seemed to be quite quite useful because it would be cultural neutral and I subsequently found that [05:07.380 --> 05:12.580] the ambiguity is quite useful because it allows you to do things quickly without being too bothered [05:12.580 --> 05:20.100] and actually there there was a there's turns out there's interesting psychological advantages from [05:20.100 --> 05:26.660] breaking things down into a certain unit of things so for instance I was reading that it takes seven [05:26.700 --> 05:34.820] forms that in fact whatever things are roughly people can put things into seven boxes so expecting [05:34.820 --> 05:40.260] the number of cows of a field there's a variance which happens with around seven in terms of people [05:40.260 --> 05:45.420] and expectations as well as expectations with bitterness and some people can be more precise [05:45.420 --> 05:51.420] and more accurate and there's just a kind of a deviation in terms of that once you look in the [05:51.460 --> 05:58.980] numbers of recollection and what people can hold and interpret in certain things I fixated on the [05:58.980 --> 06:09.860] number six so in effect I classified the Vim tooling which I was dealing with with a roughly [06:09.860 --> 06:22.260] between 1, 2, 3, 4, well it was 10, 20, 30, 40, 50, 60 which and I subsequently expanded upon that [06:22.260 --> 06:31.380] with the realizing that things things wouldn't deal with it needed a bit more subtlety so in [06:31.420 --> 06:38.660] effect the first tier was used to delineate whether something 10 which was something which was [06:38.660 --> 06:51.500] which was which was which was something which was personally dealt with 20 to deal with documentation [06:51.500 --> 06:58.500] 30 to deal with display 40 to deal with movement 50 to do with environments such as conflicts and [06:58.820 --> 07:06.180] 60 to do with external or system-wide things or external tooling and I subsequently adapted this [07:06.180 --> 07:16.980] for two level layer with regards to 1q10 to represent one facet 1q30 to represent another [07:18.100 --> 07:24.020] and this sort of played well in terms of things but I just sort of had a bit of a [07:24.660 --> 07:32.580] I had a guilt in it because the non- that the previous system I came up with had the [07:34.020 --> 07:38.260] it worked very nicely that the you could describe things with the [07:39.460 --> 07:43.620] with the non-alpha numerics and they're quite accessible on the keyboard and so after a while [07:43.620 --> 07:50.420] with my confidence at least in terms of how I was dealing with the annotations in terms of [07:50.580 --> 07:57.460] the putting putting subsets of content which is quite similar into a specific folder [07:58.420 --> 08:06.100] with these annotations forming and dealing with things and so for instance I would end up with [08:06.500 --> 08:22.820] something looking like this which was compounded and so I started using the the letters sort of in [08:22.820 --> 08:33.940] the home row in the middle of where the QWERTY keyboard was so and it was it encouraged me to [08:33.940 --> 08:39.220] really have things in specialized forms and repositories and I took the philosophy really [08:39.220 --> 08:45.700] sort of spreading things out so for instance we look at this this is an example of [08:49.620 --> 09:00.420] of different roughly passing based activities and I could do another form and so HQH would be [09:00.420 --> 09:05.860] roughly around passing OQ would be represented of languages and tools [09:10.260 --> 09:11.940] and so for instance we could do [09:15.380 --> 09:19.540] lower and this would give an example of lots of lower based [09:22.100 --> 09:27.220] points so as you can see these annotations can allow you to really cut through and deal with [09:27.220 --> 09:34.900] various points and with the with regards to the icebreaker project I felt that the [09:36.980 --> 09:43.300] I felt this stuff was interesting but the icebreaker project was very document [09:43.300 --> 09:53.540] focused for very good reasons the my icebreaker project was has been looking into how document [09:53.860 --> 10:01.380] how flap based files could be used particularly with regards to gem text the file format of gem [10:01.380 --> 10:10.260] and I could be used to express issues and problems or also Kanban boards which is [10:13.460 --> 10:20.740] which would be more preferable than the walled garden approach of services such as Github [10:20.740 --> 10:26.420] where you in effect end up putting all your repos with all the git history and all the subtleties [10:26.420 --> 10:30.900] in terms of that but when it comes to improving any of these repos you're not allowed to [10:32.020 --> 10:39.700] delve through the history and subtleties in terms of that so here's just at the top pane an example of [10:40.500 --> 10:48.740] and G networks Kanban board repo just the read me file being run through [10:49.700 --> 10:57.460] a the git in terms of the history and diffs so as you see all of these lovely things in terms [10:57.460 --> 11:01.940] of people adding things people removing things people altering things you don't really get in [11:01.940 --> 11:17.300] Github and that's a shame I sort of looked in terms of that and it was very satisfying that [11:17.300 --> 11:25.620] gem text could provide such a minimal minimal syntactic range for expressing the ideas that [11:26.180 --> 11:32.820] that ultimately I felt the need that just to see how things could mix and and perform with and what I [11:32.820 --> 11:42.900] went with was the use of the KL liner format which is within the emacs hyper hyperbole the package [11:42.900 --> 11:48.100] which is a format which is hierarchical and it's got very good interfaces so for instance [11:48.260 --> 11:57.140] you could be adding parts like this or hitting a child form and what's very nice is as part of this [11:57.140 --> 12:05.700] being a person information manager so you can cross link blocks and if including in other [12:05.700 --> 12:14.980] documents and should the blocks change then you will be able to you'll be able to catch up and [12:14.980 --> 12:20.980] work out where that the block has been moved to at least within the same document and so that's [12:20.980 --> 12:28.580] one of the things which I really prioritized and dealt with in terms of this year and and I managed [12:28.580 --> 12:38.100] to with the interpreter canonical mix both the syntaxes of gem protocols gem text the KL liner [12:38.100 --> 12:48.660] format as well as the key annotation system and so this has and I haven't explored it perfectly [12:48.660 --> 12:53.700] but I believe that the passing expression grammars are capable of representing things [12:55.540 --> 12:58.260] within the same line and not necessarily be relegated to [13:00.420 --> 13:07.700] to comparing line by line and so this kind of deviant exploration of how syntaxes [13:07.700 --> 13:15.220] can work across I've potentially got something much more richer and and subtle with with then [13:15.220 --> 13:18.580] then the formats and syntaxes isolated [13:22.740 --> 13:30.260] here just on the top pane here is just an example of in in the in the language and [13:30.260 --> 13:38.260] pass a txr a way of creating a definition and then providing the name of the reference in this [13:38.260 --> 13:49.620] case I use the annotation style hqh to just point out that the the passing forms and and here we have [13:49.620 --> 14:02.580] the the various key key aspects uh aspects of the of the annotation um for for key just [14:02.580 --> 14:09.780] returning to that I should emphasize that that the key annotation is formed around the the [14:10.420 --> 14:17.940] green buttons which would either so for instance and it would be one of the one of the letters [14:17.940 --> 14:25.060] in there would generate would providing the the starting kernel for for an annotation but it is [14:25.860 --> 14:32.340] supplemented with qwe or two which allows to provide a an inference and this was more of a [14:32.340 --> 14:42.020] later stage innovation and you can also combine annotations the annotation points at least I do [14:42.020 --> 14:49.300] it so that up to four can be compounded to be representative of of one which excluding blooms [14:49.300 --> 14:56.500] which would be providing where the dictionary where the document deals with and encourages more [14:56.500 --> 15:03.940] recursive perspective on things has has a very large range permutative range which even though [15:03.940 --> 15:11.220] that wouldn't be satisfied with either an individual annotating things or or a community left alone [15:11.220 --> 15:18.500] the the logical outcome of combining certain things together it provides a very large range in [15:18.500 --> 15:26.340] the tens if not hundreds of thousands of of of points and so as you add one or more annotations [15:26.340 --> 15:33.380] you can really get a fingerprint of what things are and it's also got a bit subtlety regarding [15:33.380 --> 15:39.380] that it's not the lack of precision in terms of this which has been described to me more in terms of [15:40.100 --> 15:47.380] like I think it was Aristotle's use of hexes in terms of what something is and and its sort of [15:48.580 --> 15:56.580] force the philosophy of what something is and I've been trying to deliberate in terms of the [15:57.620 --> 16:00.900] the subtleties regarding that and I guess it would be for instance [16:02.580 --> 16:08.900] there's there's always conjecture regarding who invents say the first submarine or the or say [16:08.900 --> 16:17.220] something like the first submarine or the first first the first camera and so for instance from [16:17.220 --> 16:24.420] my own perspective in terms of prejudices I've got a concept of of an Irishman inventing the first [16:24.420 --> 16:35.780] submarine and London a London an English politician who was invented the first camera and that's [16:35.780 --> 16:42.980] perhaps just based on my own prejudices upbringing and me not having complete enough technological [16:42.980 --> 16:46.580] perspective and definition in terms of that and I'm sure there are people for instance and [16:47.540 --> 16:53.060] in other regions who who have different opinions and that's all fine because we all sort of have [16:53.060 --> 16:58.340] a common idea of what a submarine is or what a camera is but we might have different definitions [16:58.340 --> 17:04.820] at which point that thing moved from being something else into that form and that's why I like the [17:06.740 --> 17:13.700] the vagueness of this key and and its annotations is that it it doesn't it doesn't have grandiose [17:13.700 --> 17:19.220] claims of completeness and it has more of a kind of ectomology approach in which you can [17:19.940 --> 17:26.820] make an opinion on things switching out and it's all fine including if if the definitions changes [17:26.820 --> 17:32.660] and it's it's almost in terms of how it works and and operates in terms of the work for any [17:32.660 --> 17:38.180] user it really gives you kind of the convenience and dealing with things so just returning back to [17:38.180 --> 17:49.460] here for instance I looking in terms of a a more of a specific function at the top here you've got [17:49.460 --> 17:57.940] RQR KWK and that's in effect RQR would be a form of a to-do and KWK in terms of hashes in terms [17:57.940 --> 18:07.540] of the aspects the complementary description is create hashes and here we're just returning just [18:07.540 --> 18:16.900] in case you there's a definite the function definition as well as a reference in terms of the [18:16.900 --> 18:25.700] fact that you have the annotations being being outputted here within the the parentheses here [18:25.700 --> 18:38.100] just in the light blue and here we have the the form for putting things in cases which in [18:38.100 --> 18:45.860] in the TXR form needs to be ended this is a list based language so as you can imagine things start [18:45.860 --> 18:53.380] and stop in very clear forms you have the syntax for creating a binding which in this form would be [18:53.380 --> 19:01.060] well let's let's go the first part so this is you this is an example of a URI variable being [19:01.060 --> 19:08.500] captured which is referencing a separate function and which and and expecting this outcome and of [19:08.500 --> 19:15.620] course you might have you could have a function capturing multiple things and which this this [19:15.620 --> 19:20.020] approach could capture different points and at least my interpretation regarding why I'm doing [19:20.020 --> 19:27.220] this binding is because it allows it seemingly allowing you to inherit all the subtleties upstream [19:27.220 --> 19:32.420] in terms of that but I might be a bit flaky in terms of that so as you can imagine there are [19:32.420 --> 19:39.700] sort of lots of different forms and and and dealing with things and here's an example of a of one of [19:39.700 --> 19:48.980] the of the forms which would have the with a here classic regular expression style things in terms of [19:48.980 --> 19:55.780] repeating numbers and various points and so just to give an example of how I could sort of use these [19:55.780 --> 20:09.540] annotations for right sort of racing through things so here is an example of RQR which would be [20:10.340 --> 20:20.580] a mechanism for just pulling up all of my to-dos and here you have yeah it's referencing the fact [20:20.580 --> 20:25.220] that there are 202 different tasks and dealing with things and obviously this is just providing [20:25.220 --> 20:32.500] a document type a singular document but you could be for instance performing a search based upon [20:32.500 --> 20:38.500] multiple documents or within the project which within this emacs operating environment means that [20:39.460 --> 20:46.340] you're pretty much just limited by time and ambition so for instance you could [20:49.460 --> 20:51.940] as you can see it's very terse [20:58.580 --> 21:06.260] and this is this is how this is for me quite significant in terms of flying by I I really [21:06.820 --> 21:13.060] really try and make sure that I have maximum flow and that I can switch from one mental state to [21:13.060 --> 21:20.740] another and and and handle multiple things without being overwhelmed and for instance the name that [21:20.740 --> 21:27.380] the fact that the documents and the and the directories have to have named in terms of that [21:27.380 --> 21:31.940] means that it makes it easier for instance jumping for a different file so for instance if I press [21:32.660 --> 21:36.580] ctrl x and b in emacs then there's a range of [21:40.660 --> 21:47.940] point so if just pressing mqm here for instance has given me a list of different [21:47.940 --> 21:55.140] buffers and and the names in terms of that so it I can really sort of come up with [21:55.700 --> 22:01.460] buttons and hotkeys and actions and to deal with that so for instance here's just a way in in terms [22:01.460 --> 22:08.020] of the reuse of these annotations can come can be dealt with so for instance at the top we have [22:08.020 --> 22:16.820] svge tag mode which is an third party emacs library which allows you to turn various points [22:18.980 --> 22:25.140] in terms of these black and white boxes are the annotations I would like to say improved [22:25.140 --> 22:30.820] or visualized but you can also add other things in terms of that I've talked in other activities [22:30.820 --> 22:40.100] regarding the the use of hyper hyper hyperbole the in terms of navigation and [22:42.500 --> 22:48.180] and points in terms of that so this time I thought I'd just look at one of the latest features from [22:48.180 --> 22:54.820] number eight version eight which is defil which provides more a regular expression based form [22:54.820 --> 23:02.180] in terms of that so this form would be the defining of the function the name of this function the [23:02.980 --> 23:12.660] the opening context the middle context at the ending context as well as the middle context [23:12.660 --> 23:18.020] as well as what you're meant to do based upon that within these within these curly parentheses [23:18.260 --> 23:25.860] so what I've what I what is what is the conjecture in terms of this one is the fact that [23:25.860 --> 23:28.820] within a specific annotation you could be having [23:31.780 --> 23:37.940] different actions based upon where the cursor is within the annotation let alone the potential in [23:37.940 --> 23:44.660] terms of any perspective before or afterwards and this is quite deep because of the use of [23:44.660 --> 23:49.780] repeativeness and various forms that you could form very complex workflows not necessarily from [23:50.660 --> 24:00.820] key bindings pulling out the the the the things and and the or the use of classic my [24:01.940 --> 24:09.780] menus but in fact you could use the the cursor within or relative to a one of these annotations [24:09.860 --> 24:14.580] and that forms the the action which could get very fast in terms of just pushing about it [24:15.380 --> 24:20.580] having a dedicated action in in terms of the styles dedicated action button for dealing with [24:20.580 --> 24:24.740] things and so the the menu would in effect be the cursor related to the [24:28.900 --> 24:34.980] and here's a high roll of format which is within the hyperbole suite which looks into things [24:35.940 --> 24:42.100] and that's very interesting which I'll be looking into more so for instance an action could be to [24:43.540 --> 24:49.540] go to a subset of this for instance this is an example of the section shells which has the [24:49.540 --> 24:53.940] subsection and I haven't really I don't really have the time to go into this further but there's a [24:53.940 --> 25:04.660] recent emacs conference where this is one of the main talking points here is a here is a product [25:04.660 --> 25:12.100] of a script which I think is about 50 gigabytes or might be maybe this is a 20 50 or 20 megabytes [25:12.820 --> 25:21.460] which is an effect a rip grip through various points and and and and and dealing with the [25:22.660 --> 25:27.300] this this is a and trying to isolate various various things so let's [25:28.260 --> 25:36.740] so let's just highlight some colors quickly we'll just do that let's see pink yeah [25:38.260 --> 25:44.420] well that's probably slowing it down but whatever but in effect it's classic rip grip answers [25:45.780 --> 25:51.380] which document which line which character what was dealt with in here I'm just running through the [25:51.380 --> 25:56.500] entire system the entire file system to find the annotations pertinent [25:58.580 --> 26:06.980] ah but yeah there we go so um but we'll use swiper to reinforce [26:07.940 --> 26:25.380] so this will ah this will have the aggregate of it's got it does have duplicates at least how [26:25.380 --> 26:34.660] this was set up but that's fine because the outputs dealing with the orderly fashion in terms of that [26:34.660 --> 26:41.380] so ascertain is it come on [26:43.940 --> 26:50.420] sorry the uh I think my computer's a bit overwhelmed it's humming a bit but there must be [26:50.420 --> 26:56.740] some background thing yes so here we go so we've got ascertaining ascertain whether in correct location [27:05.140 --> 27:10.580] that ascertain wherever useful nothing links to it and as you can I I do have [27:12.180 --> 27:19.540] I do have tooling which sort of deals of this from the point of a specific script and I've [27:19.540 --> 27:26.660] I've worked out a way to in effect inject the annotations based upon hashing of content [27:26.660 --> 27:32.260] I've also been developing the hash trees forming with regards to the documents [27:33.140 --> 27:41.060] but yes um I hope this is of interest and yeah there's there's lots of interesting [27:41.060 --> 27:46.340] things with regards to icebreaker and I guess it would be best to visit the [27:47.060 --> 27:52.900] fostering page for this talk for some more supplementary information thank you very much [28:02.260 --> 28:03.640] you