├── notes
├── 2021
│ ├── 03.md
│ ├── 05.md
│ ├── 08.md
│ ├── 09.md
│ ├── 03.opml
│ ├── 05.opml
│ ├── 08.opml
│ ├── 09.opml
│ ├── 04.md
│ ├── 04.opml
│ ├── 07.md
│ ├── 06.md
│ ├── 07.opml
│ └── 06.opml
└── source.opml
└── README.md
/notes/2021/03.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scripting/drummerSupport/main/notes/2021/03.md
--------------------------------------------------------------------------------
/notes/2021/05.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scripting/drummerSupport/main/notes/2021/05.md
--------------------------------------------------------------------------------
/notes/2021/08.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scripting/drummerSupport/main/notes/2021/08.md
--------------------------------------------------------------------------------
/notes/2021/09.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scripting/drummerSupport/main/notes/2021/09.md
--------------------------------------------------------------------------------
/notes/2021/03.opml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scripting/drummerSupport/main/notes/2021/03.opml
--------------------------------------------------------------------------------
/notes/2021/05.opml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scripting/drummerSupport/main/notes/2021/05.opml
--------------------------------------------------------------------------------
/notes/2021/08.opml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scripting/drummerSupport/main/notes/2021/08.opml
--------------------------------------------------------------------------------
/notes/2021/09.opml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scripting/drummerSupport/main/notes/2021/09.opml
--------------------------------------------------------------------------------
/notes/source.opml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scripting/drummerSupport/main/notes/source.opml
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Drummer Support
2 |
3 | A public site for support of Drummer users.
4 |
5 | ### What is Drummer?
6 |
7 | Drummer is a web scripting environment built around outlining and JavaScript.
8 |
9 | A blog post I wrote about Drummer, in development, in April 2021.
10 |
11 | v2.0.9, the first public version of Drummer, was released on October 10, 2021.
12 |
13 | We're basically retracing the steps that led to Frontier from a user scripting standpoint. Only this time the language is JavaScript, and the verb set applies to files and apps that exist in the cloud.
14 |
15 | There are new features in the outliner and more to come. The tabs system is new. Bookmarks are new, and they have surprising power -- they point to individual headlines in outlines, they're like permalinks. I think this method will lead us to cloning, I think we're actually pretty close now. I was never that big a fan of cloning, but people really like it, at some point it should happen.
16 |
17 | An Electron version of Drummer for the Mac is available. I am using it every day to write Scripting News. I have it hooked into my CMS via an icon with an attached script that makes HTTP calls.
18 |
19 | Verb docs are available now.
20 |
21 | ### Docs
22 |
23 | We have docs! Here are some of them. You'll see links to others in the sidebars, and in the Docs menu in Drummer itself.
24 |
25 | * About Drummer
26 |
27 | * Files and the File menu
28 |
29 | * Scripting in Drummer
30 |
31 | * Blogging in Drummer
32 |
33 | * Instant outlines
34 |
35 | * DocServer -- a collection of docs for the verb set.
36 |
37 | * Change notes (opens in Drummer)
38 |
39 | For developers there are also docs that explain how to support OPML, and provide working code in JavaScript. OPML is the file format for outlines in Drummer. It's also a widely used format in the RSS world.
40 |
41 | ### Questions/comments...
42 |
43 | Add an item to this thread, or start one of your own.
44 |
45 | Remember, when explaining a problem be sure to
46 |
47 | 1. Say what you did, step by step, so we can reproduce the problem.
48 |
49 | 2. What you expected to happen and,
50 |
51 | 3. What actually happened.
52 |
53 | We like hearing about how you're using Drummer. If you want to share, please post the story as an issue here. You can also post a link to a post on your Drummer blog. :smile:
54 |
55 |
--------------------------------------------------------------------------------
/notes/2021/04.md:
--------------------------------------------------------------------------------
1 | * April 9 #
2 | * [[Drummer]] #
3 | * Beautiful example script that gets the names of the first users of Twitter. #
4 | * http://scripting.com/2021/04/09/141443.html?title=aDrummerExample #
5 | * April 8 #
6 | * [[Drummer]] #
7 | * New verb: twitter.getScreenname #
8 | * http://scripting.com/code/docserver/?verb=twitter.getScreenname #
9 | * twitter.getScreenname ("3842") #
10 | * Jason #
11 | * twitter.getScreenname (twitter.getUserProfile ("jack").id) #
12 | * jack #
13 | * New verb: drummer.runScript #
14 | * http://scripting.com/code/docserver/?verb=drummer.runScript #
15 | * There is a problem, and it's the general problem with running script text at this point. #
16 | * I wanted to implement and document this verb because I needed to make a decision on where it goes. #
17 | * I chose to create a class called drummer because it's what it is. I'm asking Drummer to run the script. #
18 | * I spent a lot of time staring at the Frontier verb set before deciding on this. #
19 | * Frontier has a class called Frontier, which is basically a grab bag of random stuff Frontier does on its own behalf. #
20 | * I also plan to have a thread class, that launches scripts in threads. But not yet. #
21 | * Places for callbacks in Drummer, yes there are some #
22 | * I want to have a server component in the browser app, but we can't receive HTTP, so the next best thing I can think of is websockets, so I'm designing an interface for that. Curiously, it must use callbacks. Not the only place, the op visit verbs do too. They are not asynchronous. #
23 | * [[DocServer]] #
24 | * New navigation approach #
25 | * There's a new Verbs menu. #
26 | * It's a two-level hierarchy. #
27 | * At the top level, verb classes. #
28 | * At the second level, verb names. #
29 | * Choose a verb name, and the docs for that verb appear. #
30 | * Problem #
31 | * A long class like string.xxx is too long to fit even on my big screen. #
32 | * April 7 #
33 | * [[Drummer]] #
34 | * opml verbs #
35 | * There are four verbs: #
36 | * opml.getHeaders #
37 | * opml.setHeaders #
38 | * opml.getCurrentOpml #
39 | * opml.getCurrentObject #
40 | * All are tested and documented. #
41 | * The idea behind this class is to gather all the whole-file outline operations in one place. #
42 | * There are OPML-related verbs in op, they do not deal with the whole file. #
43 | * op.getCursorOpml and op.insertOpml #
44 | * I did not implement the other side of getCurrentObject because I have trouble even thinking about it. ;-) #
45 | * April 6 #
46 | * [[LO2]] #
47 | * New bookmarks include info about where the cursor should go. #
48 | * When you create a bookmark, now it attaches to the bookmark, as an attribute, the value of the created attribute of the headline the bar cursor is on when you create the bookmark. Later, when you choose the bookmark, after it opens the outline, it looks for a headline with the remembered created it, and if it finds it, that's where the bar cursor shows up. #
49 | * [[Docs]] #
50 | * I've now got a strategy for doing docs. #
51 | * I use one-level includes in the verb docs file, so op verbs, for example is in its own OPML file. #
52 | * I tie them all together through the Bookmarks menu as well as via includes in the OPML source. #
53 | * So editing is still pretty easy. I depend much less on remembering names of files and whether they're public or private. Bookmarks hides all that, and let's me use more characters to describe what's going on. Big win for complex projects and documenting Drummer is probably the most complex writing project I've ever done. I've never written the docs for my own product before. #
54 | * [[Drummer]] #
55 | * The op "visit" routines are tested and documented. #
56 | * They were in poor shape, basically they didn't work. #
57 | * Note: The callbacks are not asynchronous, so they do not have to be called with promises. #
58 | * The three verbs are: #
59 | * op.visitAll #
60 | * op.visitSubs #
61 | * op.visitToSummit #
62 | * The examples are a bit more complicated than the other verbs, so they are not meant to be run with Cmd-/. #
63 | * file.readOptionalFile, new verb, written, tested, documented #
64 | * http://scripting.com/code/docserver/?verb=file.readOptionalFile #
65 | * April 5 #
66 | * [[LO2]] #
67 | * It's been a rough couple of days. after a week of big progress, I started going into areas of the program that are hard to deal with and came up empty in all cases. Shit happens. #
68 | * I wanted to have a popup on each file in a tab that displays info about the file, it's size, dates, private or public. But it turns out that the way bootstrap sets up tabs, anchor elements are blocks, not inline. Trying to override that ended up with even more problems. #
69 | * I figured out how to make switching between tabs instantaneous, by keeping around the DOM structure that Concord manages instead of having to reload OPML. But the tabclick routine does a lot. Handles hoisting, instant outlines, and more. Which makes this pretty complex. Might require another rewrite of tabclick to get this done, but it will get done. #
70 | * There were a few others. I have to regroup and plan out my next steps. #
71 | * April 3 #
72 | * [[Drummer]] -- root.opml #
73 | * root.opml is where your global scripts and data go. #
74 | * like the other special files, it is opened automatically at startup, if it exists. #
75 | * the top level of the root outline has names. they must be valid JS names. #
76 | * below the top level is up to you, however it must be legal JS syntax. #
77 | * when it loads the root outline, drummer loops over each of the summits, and for each, does an assignment: #
78 | * root [name] = subtext #
79 | * root is a global object in Drummer. #
80 | * name is the name from the summit #
81 | * subtext is all the subordinate text #
82 | * here's an example, what's in my root.opml right now. if you want you can put it in yours, and the examples in the next section should work. #
83 | * test #
84 | * function (name) { #
85 | * dialog.alert ("Greetings: " + name); #
86 | * } #
87 | * myPrefs #
88 | * { #
89 | * age: 34, #
90 | * country: "USA", #
91 | * favoriteMovies: [ #
92 | * "babe", #
93 | * "the departed", #
94 | * "casablanca" #
95 | * ] #
96 | * } #
97 | * what can I do with this? #
98 | * root.test ("Bull Mancuso") #
99 | * undefined #
100 | * root.myPrefs.favoriteMovies [1] #
101 | * the departed #
102 | * as with the other special outlines, as you're editing root.opml it is processed as if you were starting up, so your changes are immediate. #
103 | * root is in the Special files sub-menu of the Files menu. #
104 | * prior art #
105 | * root in Frontier #
106 | * The glossary in Old School (and going back to Frontier website framework) #
107 | * [[LO2]] #
108 | * The close box only appears in the current tab. More economical use of horiz space. #
109 | * Double-clicking on an include node now expands it. #
110 | * As far as I can tell this hasn't worked since I switched to the new server. #
111 | * [[DocServer]] #
112 | * My verbDocs.opml file was getting too large to manage in LO2. #
113 | * I needed to break it up to multiple files, and link them together with includes. #
114 | * So I added a one-level include feature in DocServer. #
115 | * I'm going to be doing more with includes, this is a first step. #
116 | * April 2 #
117 | * [[LO2]] #
118 | * Each tab now has an x which, if you click it, will close the tab. #
119 | * This makes closing tabs easier in two ways. #
120 | * 1. You don't have to activate the tab you want to close. #
121 | * 2. You don't have to go to the File menu. #
122 | * Still thinking about whether I want every tab to have a close box. #
123 | * It adds 10px horizontal to each tab. #
124 | * It might not be worth the tradeoff. #
125 | * [[DocServer]] #
126 | * the left column now lists verb categories, not verbs. #
127 | * the list was getting too long to be useful. #
128 | * watch out for UI glitches, there probably are some. #
129 | * April 1 #
130 | * [[question for andrew]] #
131 | * There are two ways to run a script. In one, I can have multiple lines of code, logic and looping. #
132 | * In the other, I can just have one expression. #
133 | * Yet when I look at the code, they do the same thing, they both call runScriptText. #
134 | * I want to create example scripts, for DocServer, that have more than one statement on a line, and have been trying to figure out how this works. I thought I understood, but apparently not #
135 | * [[drummer]] #
136 | * scripts that run when you expand a headline #
137 | * a new section to the scheduler outline #
138 | * the scripts run when you expand a headline #
139 | * example #
140 | * expand #
141 | * echo type #
142 | * var type = op.attributes.getOne ("type"); #
143 | * if (type === undefined) { #
144 | * console.log ("no type"); #
145 | * } #
146 | * else { #
147 | * console.log (type) #
148 | * } #
149 | * echo text #
150 | * console.log (op.getLineText ()) #
151 | * quiet power #
152 | * in frontier we had a feature called nodetypes #
153 | * based on the type of a node, certain things happen #
154 | * LO2 already has certain types defined #
155 | * include #
156 | * link #
157 | * word #
158 | * tweet #
159 | * with this feature you can add your own #
160 | * scheduled scripts #
161 | * Fixed a bug where it would only run the first script in a given class. #
162 | * file.getFileInfo #
163 | * http://scripting.com/code/docserver/?verb=file.getFileInfo #
164 |
--------------------------------------------------------------------------------
/notes/2021/04.opml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | notes/2021/04.md
5 | <%dateModified%>
6 |
7 | 1
8 | 300
9 | 700
10 | 900
11 | 1500
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
--------------------------------------------------------------------------------
/notes/2021/07.md:
--------------------------------------------------------------------------------
1 | * July 31 #
2 | * electric drummer #
3 | * todo #
4 | * make outline public command doesn't work in E/D #
5 | * all you have to do is add a flPublic header attribute with a value true #
6 | * E/D takes care of the rest #
7 | * but it's not doing that #
8 | * drummer #
9 | * change notes outline for the testers #
10 | * a command off the Docs menu #
11 | * start setup of testers nightly email #
12 | * July 29 #
13 | * docs #
14 | * working on Scripting in Drummer doc #
15 | * the test menu -- this is is where i put scripts that i want you to try out #
16 | * new preference setting #
17 | * checkbox: include DW's test menu? #
18 | * appPrefs.flIncludeDwTestMenu -- default false #
19 | * pagepark #
20 | * todo -- i want to create a special version of docserver with a config.json structure #
21 | * pass over enough info to docserver somehow to tell it where to find its opml file #
22 | * i tried using a url param, but it wasn't being sent across #
23 | * July 28 #
24 | * drummer #
25 | * gather notes about scripting in drummer #
26 | * pagepark #
27 | * flServeConfigJson -- a new config value -- defaults false. #
28 | * Determines whether we serve the config.json file from each folder that has one. #
29 | * This was an oversight. I want to close this door asap, but in case people have an application for it, I want to make it possible to open door in a single case or globally. #
30 | * if flServeConfigJson is false, we will report 404 not found for config.json files in domain folders. If it's true, we'll serve it just like any other file. #
31 | * Fix docs for running apps that says you can't launch new apps without rebooting pagepark, it's not true, i do it all the time. #
32 | * July 27 #
33 | * pagepark #
34 | * Shouldn't be serving config.json from sub-folders of the domains folder. #
35 | * docserver #
36 | * docserver app moves to docserver.scripting.com #
37 | * The command in the Menu changes its name to "Go to this page" -- instead of putting up a dialog it opens the page specific to the current verb. #
38 | * The page title now incorporates the name of the verb whose docs we're looking at. #
39 | * Allow the URL of the outline to be passed in as a param. #
40 | * #
41 | * #
42 | * #
43 | * #
44 | * home page is the DocServer app #
45 | * it has a Docs menu, which is an outline of course #
46 | * in it are Drummer docs pages #
47 | * same menu is in the Drummer app? #
48 | * generated from same outline #
49 | * the docs pages are served from a sub-folder of the domain folder #
50 | * served from a static folder on Miami #
51 | * docserver #
52 | * daveappserver #
53 | * serving static files #
54 | * suppose a request comes in for myapp.com/docs/ #
55 | * right now daveappserver just returns 404 not found. #
56 | * instead, let's handle it #
57 | * #
58 | * drummer #
59 | * overall docs question -- where are we going to put the docs for drummer? #
60 | * once this is solved, we can get on with shipping #
61 | * until it's solved just chipping away at the edges #
62 | * options #
63 | * docserver.scripting.com/drummer #
64 | * docserver.org/drummer #
65 | * drummer.scripting.com/docs #
66 | * drummerdocs.scripting.com #
67 | * drummer.garden/docs #
68 | * drummer.pub/docs #
69 | * drummer.love/docs #
70 | * drummer.farm/docs #
71 | * docs for various coding constructs #
72 | * iconbar #
73 | * scheduler #
74 | * root #
75 | * scripts menu #
76 | * docserver should be usable for other projects #
77 | * url param, points to the outline containing the docs #
78 | * the filename is not displayed in the about box #
79 | * that's crazy, how are you supposed to figure it out #
80 | * check out bookmarks and instant outlines #
81 | * subscribe to my worknotes outline #
82 | * instant outlines #
83 | * new rule, when you subscribe to an instant outline and it has a header element, that's the outline we read, and the outline we subscribe to. #
84 | * written up here. #
85 | * July 26 #
86 | * scripting news #
87 | * bring back the close box, move the arrows to the empty lower left corner of dialog. #
88 | * didn't work. there's a reason the dialog is set up the way it is #
89 | * todo: i want a permalink for a tagref #
90 | * done #
91 | * socketServer #
92 | * it was manufacturing the URL to notify about #
93 | * instead use the urlPublic value #
94 | * we're reading the opmltext anyway #
95 | * drummer #
96 | * when you subscribe to an outline, use the urlPublic value, no matter what URL the user gave you. #
97 | * this means anyone who has a tab open to an instant outline in drummer now, has to close it and re-open it to be sure they'll get updates. #
98 | * stress test for instant outlines #
99 | * I opened three outlines for twitter feeds, as managed by the instantOutlines repo. #
100 | * and updated them in unpredictable orders #
101 | * there were problems, but i got everything in sync #
102 | * pagepark #
103 | * v0.8.21 and 22, now it should be possible for people to host sites where they edit the home page using LO2, or any app that generates OPML. #
104 | * July 24 #
105 | * drummer #
106 | * Get My Tweets was set up to use littleoutliner.com credentials, and in Drummer we have its credentials, so it doesn't work. Decided to integrate the feature into davetwitter, so every app that uses this can do it through its own server. #
107 | * davetwitter #
108 | * added Get My Tweets functionality used by Drummer #
109 | * July 23 #
110 | * opmltweets #
111 | * the app was moved to a public server -- opmltweets.scripting.com. #
112 | * July 22 #
113 | * drummer #
114 | * added opml.js to the includes #
115 | * #
116 | * sort out issue with instant outline updates coming in and overwriting the content of another tab #
117 | * a data-losing situation #
118 | * scripting news #
119 | * tags feature announced #
120 | * http://scripting.com/2021/07/22/135636.html?title=taggingInScriptingNews #
121 | * tagserver #
122 | * repeatable bug #
123 | * this is a [[tag]] #
124 | * save outline #
125 | * it shows up #
126 | * change the text to #
127 | * this might be a tag [[tag]] #
128 | * save #
129 | * the tag ref is gone #
130 | * make a change #
131 | * save #
132 | * the tag is back #
133 | * July 21 #
134 | * scripting news #
135 | * move closebox vertically #
136 | * move the back arrow further to the left #
137 | * color/bold when you hover over a tag #
138 | * i've got the tagref dialog integrated with scripting news, but i'm not calling out the tags yet. i want to have a settle-in session with it. time for a break. #
139 | * drummer #
140 | * bridge between drummer and github #
141 | * i want to be able to edit docs that flow to github but are written in drummer #
142 | * test group #
143 | * tiensonqin #
144 | * RCmerci #
145 | * weihua-lu #
146 | * July 18 #
147 | * scripting news #
148 | * i want to try a different approach to tags #
149 | * let's adapt OPML Tags Home to tags.scripting.com #
150 | * make a [[xxx]] link into a link into that app #
151 | * get on with it #
152 | * tagbase #
153 | * add a permalink field to the database for each tag ref #
154 | * July 17 #
155 | * scripting news #
156 | * replace a tag with a link to a special kind of popup window that displays other posts that are similarly tagged. #
157 | * July 15 #
158 | * scripting news #
159 | * UI for tagging #
160 | * drummer #
161 | * no more subscribe to outline #
162 | * the command changes to Open URL... #
163 | * because that's all it is #
164 | * if it has a websocket, we subscribe #
165 | * you can bookmark it #
166 | * tagServer is modernized #
167 | * It's a package, and it returns results in OPML. #
168 | * July 11 #
169 | * Hoover #
170 | * next-up for hoover, have it only pay attention to the most recent day #
171 | * that goes for the visiting routine and #
172 | * for getting history #
173 | * thus you can edit or delete items in the rest of the outline, we only care about today. #
174 | * Drummer #
175 | * Make dark mode an option. #
176 | * Also let users configure their own CSS. #
177 | * Publish the source for the darkmode CSS. #
178 | * What we have now is crude, just black and white. #
179 | * July 10 #
180 | * idea #
181 | * Something like nodeEditor inside Drummer. #
182 | * verbs #
183 | * op.attributes.deleteOne appears to not work #
184 | * electric drummer #
185 | * Docs menu must be added #
186 | * it should be copied into the includes folder #
187 | * hoover #
188 | * have a framework up and running, something that will likely replace tagserver. #
189 | * the plan -- every headline of type outline goes in the database #
190 | * the headline of the outline node is the tag, unless there's one or more [[xxx]] strings in the text, in which case its not tagged on the text of the headline, and is tagged by the values of each of the [[xxx]]s. #
191 | * support #
192 | * started a private support group on Github for drummer #
193 | * July 9 #
194 | * hoover #
195 | * I have one outline I use to feed stuff into a tagserver type database #
196 | * follows a calendar structure. any item with a type attribute gets included in the database. #
197 | * i can request to see all the items with a given tag #
198 | * as an outline i can subscribe to #
199 | * drumkit #
200 | * a package for hosting your own drummer #
201 | * July 8 #
202 | * tagbase #
203 | * give it a calendar structured outline #
204 | * everything with a type attribute defines a document, something that can be tagged #
205 | * the top level headline is the tag, in the case of this outline, the name of a product #
206 | * case insensitive #
207 | * you can view all the notes for a topic #
208 | * in a web page #
209 | * or in OPML, so you can include it in an outline #
210 | * most outlines will not go into the tagbase #
211 | * it's designed for development diaries like this one #
212 | * drummer #
213 | * moved from http://scripting.com/code/testing/drummer #
214 | * to http://scripting.com/code/drummer #
215 | * electric drummer #
216 | * note because of includes folder, we now how to rebuild the includes when we make a change to anything it depends on #
217 | * the file/close command works again #
218 | * i had changed the css on the close box, so I wasn't finding the visible one when i searched for it #
219 | * i created an includes folder and put test.js in it with one routine and i was able to call it #
220 | * code is in nodeEditorSuite.suckDownElectricDrummerIncludes #
221 | * so i'm going to suck down all the files ED includes over the net and put them in the includes folder #
222 | * http://s3.amazonaws.com/scripting.com/code/includes/jquery-1.9.1.min.js #
223 | * http://s3.amazonaws.com/scripting.com/code/includes/bootstrap.css #
224 | * http://s3.amazonaws.com/scripting.com/code/includes/bootstrap.min.js #
225 | * http://scripting.com/code/fontawesome/5.12.0/css/all.css #
226 | * http://s3.amazonaws.com/scripting.com/code/includes/basic/code.js #
227 | * http://s3.amazonaws.com/scripting.com/code/includes/basic/styles.css #
228 | * http://fargo.io/code/storage/api.js #
229 | * http://scripting.com/code/concord/testing/3.0.6/concord.js #
230 | * http://scripting.com/code/concord/testing/3.0.6/concordstyles.css #
231 | * http://fargo.io/code/shared/outliner.js #
232 | * http://fargo.io/code/shared/xml.js #
233 | * http://fargo.io/code/shared/arrowpad.js #
234 | * http://fargo.io/code/shared/twoutliner.js #
235 | * http://fargo.io/code/sparkmd5/spark-md5.min.js #
236 | * http://fargo.io/code/keypress.js #
237 | * http://scripting.com/code/xmlrpcbrowserclient/xmlrpc.js #
238 | * http://fargo.io/code/shared/buildrss.js #
239 | * http://fargo.io/code/shared/tableeditor.js #
240 | * http://fargo.io/code/shared/tableeditor.css #
241 | * http://scripting.com/publicfolder/code/jsParserForLO2/acorn.js #
242 | * http://scripting.com/publicfolder/code/jsParserForLO2/escodegen.browser.js #
243 | * http://scripting.com/code/concord/concordscript/scripting.js?ghi=6 #
244 | * http://scripting.com/code/concord/concordscript/verbs.js?ghi=9 #
245 | * http://fargo.io/code/shared/outlinedialog.css #
246 | * http://fargo.io/code/shared/outlinedialog.js #
247 | * http://scripting.com/code/testing/drummerhome/code.js?ghi=6 #
248 | * http://scripting.com/code/testing/drummerhome/styles.css?ghi=6 #
249 | * http://fonts.googleapis.com/css?family=Ubuntu:400,500i,700 #
250 | * http://fonts.googleapis.com/css?family=Rancho #
251 | * http://scripting.com/code/fontawesome/5.12.0/webfonts/fa-solid-900.woff2 #
252 | * http://scripting.com/code/fontawesome/5.12.0/webfonts/fa-brands-400.woff2 #
253 | * http://fargo.io/code/node/shared/askdialog.html #
254 | * moved it to http://scripting.com/code/electricdrummer/ #
255 | * the icon for electric drummer is driving me crazy. have to get it back to the drummer #
256 | * what i did to get it right -- deleted the copy of the ED app in the Applications Folder, and in the development folder, and then built the app with the correct icon. #
257 | * since the icon won't change again, we should not have to do this again! #
258 | * July 7 #
259 | * Development diary #
260 | * Need a non ad hoc flow for daily development notes. This is a good application for tags. #
261 | * Finally lets get a system in place that works as well as what we have for Scripting News. #
262 | * PagePark #
263 | * Andrew reports a problem with mirrors and index files. #
264 | * https://github.com/scripting/pagePark/issues/21 #
265 | * Drummer #
266 | * Creating a connection between DocServer and Drummer #
267 | * To start a command in the Docs menu. You enter the name of a verb, and it opens DS to that page. #
268 | * But there's a problem, the source outlines in ED were pointing to testing.littleoutliner.com. Not good. #
269 | * I need to be able to work on ED, esp to update how it handles pub/sub. that's changing, no instantoutliner.com needed, we get all the info we need from the head of the outline. #
270 | * The File Open dialog was a mess because I created some files with huge names #
271 | * made it so the cells don't wrap, so the table expands and we get a horiz scroll bar, which is preferable to the mess we were seeing before #
272 | * made the text smaller #
273 | * renamed the files #
274 | * now it looks great #
275 | * electric drummer #
276 | * when you view OPML, if the file is public, the window opens in a browser outside of Electron #
277 | * if you type cmd-f, drummer goes into a stack overflow condition #
278 | * i was prepared this morning to roll up my sleeves and deal with this, but now it's not happening. #
279 | * i can do all the finding I want, either by choosing the command from the menu, or typing cmd-f. #
280 | * so i'm going to have to fall back to my other stuff, and hope it shows up again. #
281 | * July 5 #
282 | * instantoutliner.com #
283 | * no longer needed, all the subscription info is contained in the section of the OPML file. #
284 | * but i will keep it running so the links don't break! ;-) #
285 | * tagserver #
286 | * you can have your own tag server. #
287 | * Set up a Drum Kit #
288 | * Server that you can run Drummer from. #
289 | * Just add the address I give you to config.json in the right place, and run Drummer from your own server. #
290 | * It can even be on your local computer, or LAN. #
291 | * Electric Drummer #
292 | * Get it building again, and have process for easier updates. #
293 | * default folder for pagepark #
294 | * let's start with zero chance of breakage #
295 | * if a request comes in for a host that doesn't have a domains folder, and there is a domains folder called default, serve the request from that folder #
296 | * opml.org #
297 | * i want to do a lite update to the opml.org site, along the lines of what i did for xml-rpc. #
298 | * July 4 #
299 | * opml package #
300 | * i think it should be possible to ship it today #
301 | * clean up this page #
302 | * http://scripting.com/code/opmlpackage/client/index.html #
303 | * needs description, spacing between boxes #
304 | * home page readme #
305 | * point to other code for opml devs #
306 | * place to ask questions, comment #
307 | * add outline browser to client code? #
308 | * http://fargo.io/code/browsers/outlinebrowserdemo.html #
309 | * reason -- there's confusion around which is the "real" version #
310 | * this could be the real version, with docs, public facing? #
311 | * or we could just point to it? #
312 | * point to instantOutlines project #
313 | * dev.opml.org #
314 | * I found the Manila source for the website, it's in the S3 bucket, and in the Inactive Tools folder for OPML Editor on my desktop. #
315 | * July 3 #
316 | * scripting.com story posted to github #
317 | * it's another app i ping when i update my blog #
318 | * it reads the opml of scripting.com, scans for all the stories, #
319 | * a service that posts something to github #
320 | * take all the configuration out of it #
321 | * you just have to know the url, have an authorized account #
322 | * opml package #
323 | * factor it down so the browser code is minimized #
324 | * let's not use anything but #
325 | * jquery #
326 | * write docs, release it #
327 | * Drummer #
328 | * Set it up so it runs from a server on Glitch. #
329 | * July 2 #
330 | * Notes on Andrew's checklist #
331 | * Manage Your Projects was at the top of my page, not the bottom, per the instructions. #
332 | * There was no Import from Github on the page, but there was a New Project button in the top right corner of the page. I clicked it. #
333 | * A menu pops up and at the bottom of the menu there's Import from Github. #
334 | * I clicked it, a dialog appears asking for the full URL of the repository, which I entered per the instructions. #
335 | * The instructions for setting up the first sub-folder of the domains folder are difficult, it took a few tries to get it right. It could be made a little simpler, but the task is inherently tricky. #
336 | * I have some ideas about how it could be made simpler, I'm going to think about it a bit. #
337 | * Thanks for doing this. #
338 | * opmlPackage repository #
339 | * the project is outlined in the opml file for the project #
340 | * fill in the blanks, add more blanks, next session. #
341 | * i already have a git project named opml #
342 | * i'm going to leave it alone #
343 | * this project will be in the opmlPackage repository #
344 | * #
345 | * package starts with two calls #
346 | * opml.parse #
347 | * opml.stringify #
348 | * #
349 | * both client and server #
350 | * opml.parse (opmltext) returns an outline structure #
351 | * opml.stringify (theOutline) #
352 | * client only #
353 | * read and parse an outline over http, using $.ajax #
354 | * subscribe to an outline #
355 | * opml.subscribe (url, callback) #
356 | * whenever we are notified that an outline has been modified, the callback is called with the outline as a JS structure. #
357 | * server only #
358 | * read and parse an outline over http, using request #
359 | * handle websocket subscription and notification #
360 | * #
361 | * #
362 | * #
363 | * #
364 | * finally get started with this #
365 | * glitch #
366 | * andrew says he was able to get it running #
367 | * sounds like it was easy? #
368 | * checklist to build electric drummer #
369 | * also, move all source files into the project folder, it should not read any source code over the net. #
370 | * file/new command -- file browser is fucked up, folder navigation doesn't work. #
371 | * when you click on the Eye icon, the page should open outside of Electric Drummer, in the web browser. #
372 | * simplify pub/sub user commands in File menu #
373 | * #
374 | * July 1 #
375 | * npm/opml #
376 | * let's go! #
377 | * add outline viewer code #
378 | * think about member database that can be accessed by all my apps #
379 | * where to put the database configuration data on each server? #
380 | * convert instantoutliner.com to mysql #
381 | * the coding is already done, just have to do the installation #
382 | * order a hard drive for mac mini #
383 | * roll over scripting.com opml for new month #
384 | * teach pagepark how to do a straight outline -- not done #
385 | * we didn't need it, i found the source listings app. #
386 | * use the same renderer as we currently use for outlines #
387 | * http://this.how/opmlChecklist/?format=outline #
388 | * a new attribute says which way to render the outline #
389 | * renderOutlineAs #
390 | * howto (the default, the current method) #
391 | * indentedOutline (like davewiner.com) #
392 | * opmltweets #
393 | * handle emoji short codes #
394 | * reduce http://t.co/ links using regex #
395 |
--------------------------------------------------------------------------------
/notes/2021/06.md:
--------------------------------------------------------------------------------
1 | * June 29 #
2 | * when processing one of the twitter outlines #
3 | * look for t.co urls and replace them with a link node #
4 | * for tomorrow -- #
5 | * review publish and subscribe commands in the file menu #
6 | * it should be as simple as "make this file public" (if it's private) #
7 | * and "subscribe to outline" and you enter the url for the OPML file #
8 | * you get an error if it doesn't have the right headers #
9 | * in drummer no need to call instantoutliner.com #
10 | * it'll be there after LO2 is retired, so the standalone urls still work #
11 | * it'll redirect to drummer with a url= param on the url #
12 | * npm/opml project #
13 | * both client and server #
14 | * opml.parse (opmltext) returns an outline structure #
15 | * opml.stringify (theOutline) #
16 | * client only #
17 | * read and parse an outline over http, using $.ajax #
18 | * subscribe to an outline #
19 | * opml.subscribe (url, callback) #
20 | * whenever we are notified that an outline has been modified, the callback is called with the outline as a JS structure. #
21 | * server only #
22 | * read and parse an outline over http, using request #
23 | * handle websocket subscription and notification #
24 | * todo #
25 | * see if publicfolder is ready to be installed/used #
26 | * point logseq guy at it #
27 | * June 28 #
28 | * todo #
29 | * masterpiece #
30 | * http://scripting.com/code/socketserver/log/index.html #
31 | * it has three columns one for each app that can subscribe to an opml outline #
32 | * LO2 #
33 | * Drummer #
34 | * Socket Client #
35 | * and this is where we pick up tomorrow #
36 | * socket server #
37 | * hook up to #
38 | * LO2 #
39 | * drummer #
40 | * socket client demo #
41 | * http://scripting.com/code/instantoutlinesrepo/demo/index.html #
42 | * artshow broken? #
43 | * some of the images seem to be missing on twitter #
44 | * that's where we're getting them from #
45 | * the're not missing, they just fail to load? #
46 | * added debugging code #
47 | * threadviewer is wiping out threads again. #
48 | * create an NPM project called instantOutlines. #
49 | * not able to use that name, so i created a project called opml #
50 | * amazingly i was able to get that #
51 | * start thinking about Markdown-for-Tweets. #
52 | * start recording @bullmancuso -- so i have a place to be annoying without bothering anyone #
53 | * think about a database all my apps can share #
54 | * lots of tables #
55 | * well-documented #
56 | * socket server #
57 | * switch over to new logging approach, using the array in stats #
58 | * June 27 #
59 | * socketserver work #
60 | * the log works, and i have a log displayer #
61 | * when you click a link, it reads the head of the opml, looks for an urlInstant value, if present, it opens littleoutliner with that url #
62 | * this is only necessary for littleoutliner -- drummer and other apps will get all the info they need from the head of the opml file #
63 | * urlinstant is just something that's there for littleoutliner #
64 | * June 26 #
65 | * socketserver #
66 | * log each webhook call, save it in a calendar-structured folder on the srever #
67 | * add an http call to get today's log #
68 | * http://sockets.scripting.com/getlog #
69 | * Reading my tweets in a calendar structure #
70 | * start with the demo app for instant outlines #
71 | * http://scripting.com/code/instantoutlinesrepo/demo/ #
72 | * the opml we generate has to be better tuned #
73 | * links become link nodes #
74 | * links to tweets between tweet nodes #
75 | * threads work great as-is #
76 | * test subscribing in LO2, Drummer #
77 | * there's still a fair amount of weirdness #
78 | * ioserver #
79 | * it now functions with an sql database behind it #
80 | * what's next? #
81 | * when you create a new short url, read the OPML file and get the title, description, socketserver, etc if there #
82 | * use the values from the file over the values as part of the url #
83 | * June 25 #
84 | * new ioserver #
85 | * uses sql database #
86 | * when we pick up next session, debug the create-new-link code #
87 | * add membership? #
88 | * continuing using github for now #
89 | * a commenter suggested an approach that while not perfect, actually is workable #
90 | * when you upload a file through the github api, it returns a bunch of data including the "sha" which identifies the change. #
91 | * when you access the content through the sha, it's perfect. once the API call returns, apparently the object is already available. #
92 | * you just have to construct the address like this -- #
93 | * "https://raw.githubusercontent.com/scripting/instantOutlines/" + githubResponse.commit.sha + "/misc/now.txt"; #
94 | * this presents a problem, because this address is supposed to be like the address of an RSS feed. #
95 | * something you can pass around, constant #
96 | * this means that there has to be a server in the middle that does the upload, retains the SHA, and can be called on to provide the most up to date content. since we already have to have a socketserver for this app, let's just merge the functionality, let it completely manage the storage. #
97 | * it can also do whatever instantoutliner.com is doing #
98 | * and it's a chance to use our new MySQL skills, to make something that can really grow. #
99 | * the flow #
100 | * a new NPM package called instantOutlines. #
101 | * instantOutlines.publish (urlOutline, options, function (err, data) { #
102 | * #
103 | * the data it returns #
104 | * url: "http://instantoutlines.com/09" #
105 | * #
106 | * #
107 | * }); #
108 | * instantOutlines.update (id, function (err, data) { #
109 | * }); #
110 | * #
111 | * a websockets call #
112 | * you send it an id, and it watches the outline #
113 | * June 24 #
114 | * tomorrow, forget about using github for instant outlines #
115 | * switch everything over to S3 #
116 | * paragraph links at all levels in LO2 outlines #
117 | * http://my.this.how/brandontoner/blog.opml #
118 | * github #
119 | * yesterday's experiment proved that through the API we can't do realtime storage, they're doing some kind of caching. #
120 | * threadviewer.com #
121 | * test yesterday's changes #
122 | * brandon.this.how #
123 | * A special place for Brandon to post his outlines. #
124 | * Punted on this. Asked him to use my.this.how, and i'll figure out a more general solution for blogging with Drummer. #
125 | * June 23 #
126 | * threadviewer.com #
127 | * easier approach to cache #
128 | * at start check to see if there's a cached version of the thread. #
129 | * if so and if it's more than 12 hours old, just serve it, even if reload is true. #
130 | * that protects the cache from being wiped out. #
131 | * June 22 #
132 | * Today's todo #
133 | * a new test site for pagepark #
134 | * test3.lucky.wtf #
135 | * mirror option in pagepark #
136 | * fix bug in threadreader.com #
137 | * first check if the thread is already in the cache #
138 | * if it is, and if the date is more than 12 hours ago, even if flreload is true, serve it from the cache #
139 | * because we're not going to get the thread if we reload, and we'll just wipe out the cached copy #
140 | * after that fix is in, do a new demo thread for threadreader.com, because the original one has been wiped out #
141 | * why aren't updates to scripting.com opml showing up? #
142 | * something broke #
143 | * probably has something to do with urls #
144 | * i hate this shit #
145 | * June 21 #
146 | * Todo today #
147 | * publishscriptingopml is an app in pagepark #
148 | * this was a good idea, but putting it on palatka, a production server, was a bad idea #
149 | * iterating over all the possibilities, including making changes to pagepark, that must be done off on the side. #
150 | * this is not frontier, where we still should have respected the importance of such servers #
151 | * first attempt didn't work #
152 | * shorter domain name -- pp isn't able to handle such a long one gracefully #
153 | * pubscriptopml.scripting.com #
154 | * don't include a main property in package.json, if it's there, pagepark will try to run it as a persistent script, not the intention #
155 | * each such app needs its own domain #
156 | * these are called pagepark plugins, documented here. #
157 | * #
158 | * new domain pageparkapps.scripting.com #
159 | * each app is a folder #
160 | * contains an app, with its package.json, config.json and any data it maintains #
161 | * it runs when a request is made #
162 | * i remember adding this capability to pagepark, now let's see how well documented it is! :-) #
163 | * get brandon going with pagepark #
164 | * done, using the mirror property in config.json in pagepark #
165 | * there's a problem with the thread gatherer code in davetwitter #
166 | * It only works for recent threads. In building the thread, we get the last 24 hours of the user's tweets. Any tweets that are in the thread are included. If you gather the thread more than 24 hours after the thread was complete, you won't get any of the original tweets. #
167 | * Subscribe to doc's outline in Drummer #
168 | * https://raw.githubusercontent.com/scripting/instantOutlines/main/outlines/twitter/dsearls.opml #
169 | * June 20 #
170 | * How we're going to deploy the app, publishscriptingopml, that creates the published version of scripting.com OPML #
171 | * create a new domain on palatka for cool little net-accessible scripts #
172 | * instead of each of the apps to have their own domain, included web server, forever slot, let pagepark do all the work #
173 | * this is exactly analogous to how Frontier's website framework did this #
174 | * Debugging socket server #
175 | * the problem is the urls are cross-wired. we use a different url than the one github notifies us about. we have to get these straightened out. first thing monday morning. then we can resume some non excruciating work. #
176 | * this seems to always be the vexing problem with socket server. it can be helped with some better debugging code. #
177 | * then we'll need to figure out where to stash the code that uploads the opml for scripting.com to github. it has to be triggered by the publish event in old school. #
178 | * June 19 #
179 | * Drummer #
180 | * need a way from the console to delete a tab and have it saved #
181 | * sometimes a tab shows up without a closebox? #
182 | * maybe it's better to make sure all tabs have them, why not? #
183 | * actually it has a closebox, it's hidden. if you go into the debugger and make it visible it works. that's the best way to get rid of it. #
184 | * Debugging the public OPML for Scripting News #
185 | * trigger the rebuild from within old school, so there's an update when I publish a new version #
186 | * right now i'm doing this manually #
187 | * try subscribing in drummer in the debugger #
188 | * https://raw.githubusercontent.com/scripting/instantOutlines/main/outlines/scripting.opml #
189 | * June 17 #
190 | * Idea: github verbs for [[drummer]] #
191 | * June 16 #
192 | * [[drummer]] #
193 | * Problem with instant outlines, sometimes the update shows up in another tab. No data is lost. #
194 | * Dark mode #
195 | * when you hover over a tab, the background color is an off-white. i can't figure out which element is getting the background color. maybe there's a way to work around this? #
196 | * the problem shows up in the menu too. #
197 | * how we took control #
198 | * .nav-tabs > li > a:hover { #
199 | * background-color: orange; #
200 | * } #
201 | * June 15 #
202 | * [[drummer]] #
203 | * dark mode #
204 | * $("body").css ("background-color", "black") #
205 | * $(".navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner").css ("box-shadow", "0 1px 10px white / 10%"); #
206 | * $(".navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner").css ("text-shadow", "1px 1px gray;"); #
207 | * $(".navbar-inner").css ("text-shadow", "1px 1px gray"); #
208 | * #
209 | * June 14 #
210 | * [[tagserver]] #
211 | * plan #
212 | * start a new server just for scripting.com #
213 | * tags.scripting.com #
214 | * the database is named #
215 | * scriptingtagbase #
216 | * in oldschool, when rendering a tag for say Bull Mancuso, replace it with a link like this #
217 | * [[Bull Mancuso]] #
218 | * When you go to that page, it shows a reverse chronologic table of references to the term, with the actual text indented underneath. #
219 | * new http endpoint -- /gettagrefs?tag=x #
220 | * returns an array of nodes that refernce the indicated tag #
221 | * I've got it running on my local machine #
222 | * http://localhost:1491/ #
223 | * June 13 #
224 | * [[tagserver]] doesn't have to do as much as it does #
225 | * this is what's required #
226 | * submit an outline and add each of its tags to the database #
227 | * ask for all instances of that tag, in reverse chronologic order #
228 | * June 12 #
229 | * Ideas for next directions #
230 | * release drummer alpha? #
231 | * this might be the time #
232 | * i don't want to update LO2 #
233 | * i want a tool that works with tagserver (see below) #
234 | * github verbs for drummer #
235 | * tagserver #
236 | * fresh database #
237 | * docs/announcement #
238 | * open source release? #
239 | * instantoutliner #
240 | * use a relational database #
241 | * use a signon #
242 | * when you register a new short url, your username is attached #
243 | * so you can log on, and edit any link you created #
244 | * i've been editing maps.json by hand #
245 | * yuk #
246 | * June 11 #
247 | * Trippi's podcast #
248 | * I learned he's talking to the Lincoln Project #
249 | * They were doing great when they had a clear goal, but after the election it just stopped. #
250 | * All campaigns do this, from now on this must not happen. #
251 | * Be prepared for Insurrection 2.0. #
252 | * Marketing. Start positioning it immediately, while it's fresh. #
253 | * Don't leave journalism with no idea what to say about it. #
254 | * What can people do? #
255 | * Give money. #
256 | * Our problem, create something worth giving money to. #
257 | * Instant OPML release #
258 | * new repo: instantOutlines #
259 | * https://github.com/scripting/instantOutlines #
260 | * readme.md #
261 | * Tour of the resources #
262 | * outlines #
263 | * twitter #
264 | * davewiner.opml #
265 | * gruber.opml #
266 | * #
267 | * save the example files in this repo:socketServer #
268 | * top level folders #
269 | * server #
270 | * demo #
271 | * outlines #
272 | * tweeters #
273 | * dave.json #
274 | * dave.opml #
275 | * etc #
276 | * June 10 #
277 | * opmlTweets #
278 | * Don't include replies that aren't part of a thread #
279 | * ie replies to other people's tweets #
280 | * simple way to detect, if they begin with an @ #
281 | * Nuke the icon for tweets in Drummer #
282 | * They look awful when the whole outline is tweets. #
283 | * Very distracting, convey no information at all. #
284 | * And ugly! (imho) #
285 | * A client for sockets.scripting.com #
286 | * http://scripting.com/code/socketclient/ #
287 | * June 9 #
288 | * opmlTweets schematic #
289 | * app that gathers info #
290 | * github is where it stores public files #
291 | * server app connects to github via webhooks #
292 | * notified when any of the files updates #
293 | * apps can hook up to the server app via WebSockets #
294 | * supported in every modern browser #
295 | * this is the infrastructure needed by instant outlines #
296 | * Electric Drummer #
297 | * Have to make it easy to make mods. Right now I have to rebuild to make a change, and even then I can't count on Electron to load the lastest version. #
298 | * File/Open dialog can be told which folder to start the search at. #
299 | * I'd like it to be the last folder I opened a file in. #
300 | * So I can be based at the Electric Drummer folder, not the default one in the system. #
301 | * opmlTweets #
302 | * I really don't like the twitter icons, when all the nodes in an outline are tweets #
303 | * maybe don't include the type attribute? still include the other metadata. #
304 | * replies should only be added to the outline if they are to one of the messages already in the outline #
305 | * no standalone replies #
306 | * the idea is to capture threads that you wrote #
307 | * this is for blogging, publishing outside of twitter #
308 | * twitter as a writing tool #
309 | * if an incoming tweet is a reply to a message that's already in the outline, add it as the last child of the tweet, thus building threads #
310 | * this might be a key feature? let's see. #
311 | * it works. ;-) #
312 | * uploading both OPML and jsonified OPML #
313 | * at first I thought I could just upload JSON, then realized that's ridiculous. every existing consumer or OPML is looking for XML. Yes for some irrational reason people prefer JSON. It's ridiculous, but might as well take advantage of it. #
314 | * June 8 #
315 | * Drummer and enclosures #
316 | * There's missing code that looks for the enclosure attribute and fills in enclosureLength and enclosureType. #
317 | * June 6 #
318 | * sockets.scripting.com #
319 | * notes #
320 | * ws://sockets.scripting.com:1239/ #
321 | * functionality #
322 | * handles subscribe messages compatible with daveappserver #
323 | * handle ping message, which says that a file has changed #
324 | * when a file has changed we send update messages to subscribers #
325 | * it is configured to only handle updates on certain files #
326 | * it's a daveappserver application #
327 | * it can handle all of it with no replicated code #
328 | * might require some things to be interfaced #
329 | * opmltweets #
330 | * add docs head link, to the readme on the repo #
331 | * create private repository for this project #
332 | * only upload JSONified OPML #
333 | * it really looks a lot better than the XML, sorry to say #
334 | * more whitespace. #
335 | * Docs #
336 | * Compatibility with LO2 #
337 | * For the most part Drummer is fully compatible with LO2, with a couple of important exceptions. #
338 | * Uses a different, but compatible, server #
339 | * A small number of people are running their own back-end for LO2, using the nodeStorage package. #
340 | * Drummer's backend is not nodeStorage, even though it's compatible with it, it does things NS does not do. #
341 | * The backend it does use is called daveappserver, and it is also open source. I expect I will be using that for my server software from this point on. #
342 | * I wanted something simpler. nodeStorage had become a bit of a hairball. It happens, esp when it's the first package you write in a new OS. I've learned how to use the modularity of Node more effectively over time. #
343 | * It eliminates the myOutlines folder #
344 | * In LO2, all your outlines were stored in a folder called myOutlines. The thought was the server would be used for things other than outlines, I guess. I don't remember making that decision. But it got in the way, and in Drummer, I chose to not replicate this design element. #
345 | * The good news is that you can download your files in a zip archive, from both products, and this means you can easily move your LO2 work to Drummer, when it is available. #
346 | * June 5 #
347 | * New features for instantoutliner.com #
348 | * #
349 | * Drummer: Allow me to subscribe to an OPML file #
350 | * No I/O stub. #
351 | * works but obviously no socket #
352 | * Hook up instantoutliner.com to opmltweets #
353 | * Need to provide for outlines that are not managed by one of my servers. #
354 | * nodestorage or daveappserver, both of which handle the socket notifications that the outline has changed. #
355 | * Finish up opmlToTweets app #
356 | * where to upload? #
357 | * Scripting-News/twitter/opmltweets/ #
358 | * gruber.opml #
359 | * davewiner.opml #
360 | * logseq.opml #
361 | * commit message #
362 | * what happens when you start following a new account #
363 | * follow @gruber #
364 | * when you start up, check all the accounts, rapidly. #
365 | * June 4 #
366 | * Idea: Markdown with Outlines #
367 | * New app, opmltweets.. #
368 | * Generates an OPML file for my tweets, and uploads it to GitHub. #
369 | * When using davegithub -- be sure to use a "personal access token" in place of your password. #
370 | * I lost a couple of hours on this. Oy. #
371 | * twitter.getUserTimeline gets a new param, sinceId, optional #
372 | * If provided, it's the id of the last message you've read, so you can do a sequence of calls to read all the tweets, over time. #
373 | * June 3 #
374 | * Todo #
375 | * Docs menu in electric drummer, it's not here! #
376 | * Breakage: Get my tweets command in Tools menu #
377 | * It calls a server that requires authentication for littleoutliner.com. #
378 | * My auth is for drummer.scripting.com. #
379 | * Idea: Maintain an OPML archive of my tweets #
380 | * Just like my blog. #
381 | * Calendar-structured. #
382 | * Selected metadata as attributes. #
383 | * Drummer app. #
384 | * Use the websockets interface. #
385 | * Open source. #
386 | * Idea: Tagserver for Twitter #
387 | * I have an agent script that reads my account periodically, and finds new posts that have [[double square brackets]]. #
388 | * I can browse all my categories, the same way tagserver works now. #
389 | * June 2 #
390 | * idea: do a simple http server in Electric Drummer #
391 | * authorName, authorEmail, authorWebsite #
392 | * You can now set these prefs in the Settings dialog. #
393 | * Editing isComment attribute #
394 | * If you edit attributes and change the value of isComment, the outline display didn't used to reflect the new status. #
395 | * The settings dialog now works in Electric Drummer #
396 | * I can change the font and size in the current outline, for example #
397 | * The eye icon should work for instant outlines #
398 | * they don't have a urlPublic header, but they do have #
399 | * Added link to GitHub account on scripting.com #
400 | * June 1 #
401 | * browser-based drummer #
402 | * made an outline public using the filemenu command and it has none of the header attributes #
403 | * servermonitor now monitors drummer.scripting.com #
404 | * Building with something hoisted doesn't work #
405 | * View OPML command now works #
406 | * window.open (getActiveTabStatus ().fname) #
407 | * How I got the icon to change... #
408 | * I moved the Electric Drummer app from the development folder to the work folder. The icon changed when I did that. I wonder if it'll do it again? #
409 | * Did the first blog rollover with Electric Drummer. #
410 |
--------------------------------------------------------------------------------
/notes/2021/07.opml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | notes/2021/07.md
5 | <%dateModified%>
6 |
7 | 1
8 | 300
9 | 700
10 | 900
11 | 1500
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 |
394 |
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 |
406 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 |
423 |
424 |
425 |
426 |
427 |
428 |
429 |
430 |
431 |
432 |
433 |
434 |
435 |
436 |
437 |
438 |
439 |
440 |
441 |
442 |
443 |
444 |
445 |
446 |
447 |
448 |
449 |
450 |
451 |
452 |
453 |
454 |
455 |
456 |
457 |
458 |
459 |
460 |
461 |
462 |
463 |
464 |
465 |
466 |
467 |
468 |
469 |
470 |
471 |
472 |
473 |
474 |
475 |
476 |
477 |
478 |
479 |
480 |
481 |
482 |
483 |
484 |
485 |
486 |
487 |
488 |
489 |
490 |
491 |
492 |
493 |
494 |
495 |
496 |
497 |
498 |
499 |
500 |
501 |
502 |
503 |
504 |
505 |
506 |
507 |
508 |
509 |
510 |
511 |
512 |
513 |
514 |
515 |
516 |
517 |
518 |
519 |
520 |
521 |
522 |
523 |
524 |
525 |
526 |
527 |
528 |
529 |
530 |
531 |
532 |
533 |
534 |
535 |
536 |
537 |
538 |
539 |
540 |
541 |
542 |
543 |
544 |
545 |
546 |
547 |
548 |
549 |
550 |
551 |
552 |
553 |
554 |
555 |
556 |
557 |
558 |
559 |
560 |
561 |
562 |
--------------------------------------------------------------------------------
/notes/2021/06.opml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | notes/2021/06.md
5 | <%dateModified%>
6 |
7 | 1
8 | 300
9 | 700
10 | 900
11 | 1500
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 |
394 |
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 |
406 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 |
423 |
424 |
425 |
426 |
427 |
428 |
429 |
430 |
431 |
432 |
433 |
434 |
435 |
436 |
437 |
438 |
439 |
440 |
441 |
442 |
443 |
444 |
445 |
446 |
447 |
448 |
449 |
450 |
451 |
452 |
453 |
454 |
455 |
456 |
457 |
458 |
459 |
460 |
461 |
462 |
463 |
464 |
465 |
466 |
467 |
468 |
469 |
470 |
471 |
472 |
473 |
474 |
475 |
476 |
477 |
478 |
479 |
480 |
481 |
482 |
483 |
484 |
485 |
486 |
487 |
488 |
489 |
490 |
491 |
492 |
493 |
494 |
495 |
496 |
497 |
498 |
499 |
500 |
501 |
502 |
503 |
504 |
505 |
506 |
507 |
508 |
509 |
510 |
511 |
512 |
513 |
514 |
515 |
516 |
517 |
518 |
519 |
520 |
521 |
522 |
523 |
524 |
525 |
526 |
527 |
528 |
529 |
530 |
531 |
532 |
533 |
534 |
535 |
536 |
537 |
538 |
539 |
540 |
541 |
542 |
543 |
544 |
545 |
546 |
547 |
548 |
549 |
550 |
551 |
552 |
553 |
554 |
555 |
556 |
557 |
558 |
559 |
560 |
561 |
562 |
563 |
564 |
565 |
566 |
567 |
568 |
569 |
570 |
571 |
572 |
573 |
574 |
575 |
576 |
577 |
578 |
579 |
580 |
581 |
582 |
583 |
584 |
585 |
586 |
587 |
588 |
589 |
590 |
591 |
592 |
593 |
594 |
595 |
596 |
597 |
598 |
599 |
600 |
601 |
602 |
603 |
604 |
605 |
606 |
--------------------------------------------------------------------------------