**** BEGIN LOGGING AT Fri Sep 27 02:59:57 2019 **** BEGIN LOGGING AT Fri Sep 27 04:19:59 2019 Sep 27 07:43:20 i have no dtc binary in my bbb image: https://paste.debian.net/1102905/ where should i look? Sep 27 08:40:11 * rg-28 sent a long message: < https://matrix.org/_matrix/media/v1/download/matrix.org/XwHrwvfHJbFKfPLQBudBaanQ > Sep 27 11:22:04 it looks like there's some pretty significant research involved in getting tensorflow models to run on the beagle-ai Sep 27 11:22:33 this is the best ive found https://developer.codeplay.com/products/computecpp/ce/guides/tensorflow-guide? Sep 27 11:26:05 ah found this too https://github.com/beagleboard/beaglebone-ai/issues/2 Sep 27 14:08:54 m Sep 27 14:23:20 i build an app that runs on my bbb and uses mongodb. works well but this has caused me to have to stick on debian 8.7 as mongodb is not supported on later versions...looking for suggestions on a replacement db, has anyone implemented anything on a 9.X version that they would recommend? I am not married to NoSQL as I am going to have to refactor the Sep 27 14:23:20 schema anyways. Also, it is not a database intensive application, but it was just always easier that trying to use config files Sep 27 14:36:39 smbrandonjr: i'm not a db man, but we run postgresql (using json e jsonb extensions a lot) on bbbs and are happy as hell about it. Sep 27 14:37:50 samael: that's odd.. which image you are using? anyway => sudo apt-get install device-tree-compiler Sep 27 14:39:32 zmatt: just did it, thanks. dogtag says BeagleBoard.org Debian Image 2018-10-14 Sep 27 14:39:36 smbrandonjr: why not sqlite? Sep 27 14:39:56 samael: I meant iot/lxqt/console or whatever Sep 27 14:40:03 (unfortunately that's not in the dogtag) Sep 27 14:40:15 zmatt: console Sep 27 14:41:21 well then it makes perfect sense, since the console image is meant to be minimalistic and expects you to just use APT to install whatever you want Sep 27 14:47:52 smbrandonjr: sqlite has the benefit of not really requiring any configuration (your application directly opens the database file, there's no database server) Sep 27 14:48:13 that's what i wanted, indeed. i just got misguided by searching dtc with apt and found no hits. just took a little bit to figure it out, though Sep 27 14:48:31 samael: yeah it's weird that the package name isn't just "dtc" Sep 27 15:12:49 samael - sorry saw a squirrel and got distracted...thanks for the comments Sep 27 15:13:04 zmatt thanks for your comment as well,i will check out sqlite Sep 27 15:13:11 hey look a squirrel Sep 27 15:13:31 exactly Sep 27 15:20:08 hays: you can convert tensorflow models. Sep 27 15:20:28 but, it requires a conversion tool today... Sep 27 15:20:51 not running Tensorflow itself..... which you can run, just slow-ish. Sep 27 15:21:17 http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Foundational_Components_TIDL.html Sep 27 15:24:13 maybe https://github.com/beagleboard/beaglebone-ai/wiki/Frequently-Asked-Questions#where-are-the-ai-training-materials helps? Sep 27 15:24:32 zmatt: let me know what things I need to add to this FAQ or the SRM on the wiki. Sep 27 15:24:48 since you pretty much interact with everyone here. :-) Sep 27 15:27:44 it feels a bit odd to credit me for the show-pins script when it's a heavily modified version of which I didn't even know the existence until recently :P Sep 27 15:28:15 (which also lacks all the later work I did on it) Sep 27 15:29:30 what is your preference? remove any blame? Sep 27 15:29:37 merge your improvements? Sep 27 15:30:09 *shrug* Sep 27 15:30:29 I should probably look into your changes and see about merging things Sep 27 15:30:47 but yeah no need to credit me by name, it's just a small perl script Sep 27 15:30:53 the only thing useful I did was add AM5. Sep 27 15:31:00 (that I recall) Sep 27 15:31:36 there are tons on scripts on the default image, an overview of those with a one-line description of each would be more useful than singling out this one script Sep 27 15:37:05 zmatt: cherry pick a few good ones to highlight? Sep 27 15:37:22 doing the whole lot is as bad as singling one out .. imho Sep 27 15:37:42 giving a flavour of what's there people can explore further .. Sep 27 15:40:09 hi, does anyone know why GPIO0_7 and GPIO3_18 are tied together in the beaglebone black schematics? Sep 27 15:40:34 hmmm...... well, I forgot that I threw that info into the FAQ, but I do recall singling that script out as it seems very few users know about it. Sep 27 15:40:46 well, very few users seem to even know about /opt/scripts Sep 27 15:41:58 hell *I* didn't know about show-pins being there :P Sep 27 15:42:01 stale documentation sucks, so, maybe the documentation for /opt/scripts should be closer to the repo.... Sep 27 15:42:30 yup. Sep 27 15:42:58 Maybe rcn-ee maintains the /opt/scripts documentation somewhere and I should point there? Sep 27 15:43:28 the lack of sw docs needs to be fixed. it should be something I can tackle with "free time". Sep 27 15:45:52 yeah documentation is way too sparse... Sep 27 15:46:50 especially since stuff has changed a bunch of times and a ton of random info floating around on the web regarding the beaglebone is therefore outdated Sep 27 15:47:39 and there's no authoritive documentation to set things straight Sep 27 15:48:34 ^ this :/ Sep 27 15:48:49 we need the 'beaglebone documentation project' or BDP :p Sep 27 15:48:58 :-D Sep 27 15:49:52 rcn-ee: I'll write some docs, but I'd want to fork https://github.com/RobertCNelson/boot-scripts to github.com/beagleboard Sep 27 15:53:19 zmatt: https://github.com/beagleboard/beaglebone-ai/wiki/Frequently-Asked-Questions/_compare/101b56fc0ab07e3e3e6eb2e2d3a172659bb415ea...672b7491e5fb320f04c87aedc8f240e82852b995 Sep 27 18:33:53 Hello, Sep 27 18:34:52 I tried to configure g_ether for beagleboard, compiled the kernel with usb gadget enabled Sep 27 18:36:00 But after successful booting when I try to use g_ether for USB connection it says Sep 27 18:36:31 G_ether is undefined in modules.dep Sep 27 18:36:38 Any ideas?? Sep 27 18:37:33 Hiwaeng: still sounds like the kernel module is missing, again ask in #yocto Sep 27 18:37:43 this is a yocto question, not a beagleboard question Sep 27 18:38:37 also "G_ether" sounds wrong, you probably meant "g_ether" Sep 27 18:38:54 (kernel module names, like pretty much anything on linux, are case-sensitive) Sep 27 21:44:12 helo Sep 27 21:44:51 is there a way to prevent wicd from dropping a wired connection when connecting to wifi? Sep 27 21:46:08 uhh, why would we know? it's not the default network manager on the standard images, and I can't even remember when the last time was I saw someone mention wicd here Sep 27 21:46:27 try #wicd Sep 27 21:47:21 (or switch to a different network manager. I use systemd-networkd myself) Sep 27 22:09:47 or just get rid of the connection manager crap all together Sep 27 22:10:34 ifupdown is also a network manager, just a crappy one :P Sep 27 22:11:09 unless your suggestion was to use a bunch of commands in /etc/rc.local ? :P Sep 27 22:12:41 (also, I've tried ifupdown for wifi a long time ago, iirc it was awful) Sep 27 22:31:51 yes, that is my suggestion Sep 27 22:32:11 ifconfig/iwconfig/iw has work for the longest time Sep 27 22:32:43 wpa_supplicant can handle a lot of the cruft that only gets complicated by stuff like connman, etc Sep 27 22:33:44 I know, systemd-networkd doesn't try to do wpa_supplicant's job either, it just reacts to link up (when wpa_supplicant associated to your wifi network) and then does DHCP and such (or whatever you've configured) Sep 27 22:37:51 https://pastebin.com/raw/qSGvTv4n this is my systemd-network configuration for wifi Sep 27 22:37:58 *networkd Sep 27 22:38:46 I can see the benefit of deeper integration though, e.g. if you want different network settings depending on which wifi network you connect to... I just haven't had any need for it Sep 28 01:01:00 If you are not busy @zmatt, where is the serial in import serial in this file: https://pastebin.com/5TUbrEqV. Sep 28 01:01:01 ... Sep 28 01:01:26 I was looking in the Python.org docs. and came up w/ notta. They have pickle and some other types of serialization but not serial. Sep 28 01:02:09 pip3 install pyserial Sep 28 01:02:39 So, I look at pypi for pyserial? Sep 28 01:02:52 docs.python.org only documents python itself and the standard library, not third-party modules Sep 28 01:02:59 Right. Sep 28 01:03:13 This third party module is found somewhere, right? Sep 28 01:03:14 https://pyserial.readthedocs.io Sep 28 01:03:18 oh yea! Sep 28 01:03:38 also the first google result if you search for: python serial Sep 28 01:03:39 :P Sep 28 01:03:53 Dang it. I did not know what to search. Sep 28 01:04:16 python serial. Now I know. Sep 28 01:05:30 To tell you the truth, how could I use UART to make my processor understand it needs to set off GPIO? I was thinking via software and this is most likely correct but I am sure there is some sort of issue w/ this concern. Sep 28 01:05:31 ... Sep 28 01:05:41 Something I am anware of currently. Sep 28 01:05:45 set_: that doesn't make any sense Sep 28 01:05:49 Okay. Sep 28 01:05:52 So, this is it. Sep 28 01:06:26 gpio and uart are unrelated things, nothing to do with each other Sep 28 01:06:42 My processor needs, via software, to tell the GPIO to turn on/off when my UART hardware gets notified. Sep 28 01:07:09 yep, still making no sense Sep 28 01:07:19 Is there a simple cure or do I need to research something? I am clueless right now. I have tried approaches but failed thus far. Sep 28 01:07:25 Okay. Sep 28 01:07:38 I have no idea what you're even asking and can't guess what you could possibly mean Sep 28 01:07:53 My RangeFinder, the ez2, gets a notification. Sep 28 01:08:04 "gets a notification" ? Sep 28 01:08:15 Notification = 8" away Sep 28 01:08:42 it doesn't give notifications based on thresholds afaik, it just performs measurements when requested Sep 28 01:08:53 Okay, Okay. Sep 28 01:09:20 @zmatt: Bear w/ me. Sep 28 01:10:34 The Range Finder gets a beam of something in its "sight" of 8". This should, via software, tell my processor on the BBBW, to stop my motors that are attached to my MotorCape. Sep 28 01:10:43 Does that make sense? Sep 28 01:11:26 I was thinking I could do this myself and I am trying. Sep 28 01:11:26 sure, but there's no notification, you just need to periodically perform a measurement and use the result to decide to stop the motor Sep 28 01:11:47 Right. Okay. When you type it out, it makes more sense. Sep 28 01:12:10 Please wait for me software, i.e. if you are interested. Sep 28 01:12:56 I can get the script working w/out error but the LEDs are not lighting up on the MotorCape. Therefore, I am 100% sure thus far that my software is junk. Sep 28 01:13:08 As usual. Sep 28 01:14:33 Anyway. Please hold for the paste. Sep 28 01:14:35 what script? Sep 28 01:14:42 I will show you. Sep 28 01:14:49 I am in the process of posting it. Sep 28 01:17:06 if you want to be able to react to things other than just the sonar (e.g. commands or other sensors) then probably the best solution would be to process the measurements from the sonar as they come in. if its default measurement rate (every 49 ms, i.e. 20.4 times per second) is too high, you could probably use a pwm output to generate a trigger pulse for the sonar at a lower rate Sep 28 01:18:00 Oh. Sep 28 01:18:21 (or you could trigger it manually using a gpio) Sep 28 01:18:40 Okay and please do not judge. A lot of this software is your stuff and Prabakar's stuff but mashed together and spit out in a format. Sep 28 01:19:08 Here: https://pastebin.com/0DqjVN4A is the src. I know now that I am wrong in many ways. I am sharing and learning (wrapped into one). Sep 28 01:19:37 The import of serial is not in the source. I need to import it too. Sep 28 01:20:17 And... Sep 28 01:20:50 The take=None and state=None are on the same server thus far. This is not working for me, either. I am reviewing the flask docs. too. Sep 28 01:21:23 why do you have those sleep statements? Sep 28 01:21:44 B/c...it makes sure the motors do not halt on command. Sep 28 01:21:54 ?? Sep 28 01:21:55 It "sleeps" into the halting. Sep 28 01:22:04 The starting and stopping are what is hard on the motors. Sep 28 01:22:22 This dang thing took too dog-gone long to set up, physically. Sep 28 01:22:52 I would have to tear down everything to get to the motors. I am not ready for that task, yet! Sep 28 01:23:33 I have no idea what you mean. you're just sleeping before sending a response to the HTTP client, it has no effect on your motors Sep 28 01:23:45 it just makes your server slow to respond Sep 28 01:23:45 Um. Sep 28 01:23:52 Seriously? Sep 28 01:23:57 Okay. Sep 28 01:24:25 I thought since, that sleep mechanism in the src was listed, it slowed my motors down before stopping/starting. Sep 28 01:24:31 and I have no clue what I'm looking at, I don't see how any of this could do anything Sep 28 01:24:38 Ha. Sep 28 01:24:42 What do you mean? Sep 28 01:24:47 Which part? Sep 28 01:25:09 The functions? Sep 28 01:25:21 why do you have three different @app.route decorators on 'def Distance' ? and why do you confusingly have a newline between those and def Distance? Sep 28 01:26:23 Oh! So I need to list the decorators only before the functions they describe? Sep 28 01:27:23 For instance: @app.route --->> then the function? and...another @app.route --->> another function? Sep 28 01:27:36 Is that makes sense. Sep 28 01:27:44 is = if Sep 28 01:27:53 Let me show you. Sep 28 01:28:08 also as written now it will only perform the sonar measurement when you perform a HTTP request, and it only stops the motor 2 seconds after the measurement (and I don't really understand your condition... "take" would need to be a boolean for the test to work, yet you're also passing it as title in template_data ? Sep 28 01:28:15 yes, that's why they're called decorators Sep 28 01:28:22 they decorate functions Sep 28 01:29:48 Oh. Sep 28 01:29:51 Nice! Sep 28 01:29:54 Okay. Sep 28 01:30:07 I thought this was a Flask thing only. Sep 28 01:30:11 Oops. Sep 28 01:30:21 they're not Sep 28 01:30:24 I know. Sep 28 01:30:32 I know now. Sep 28 01:30:57 decorators "decorate" functions! Sep 28 01:31:11 and by decorate, they come before the function. Sep 28 01:32:28 https://pastebin.com/7UFHp1Hw is the update of the decorator under state=None. Sep 28 01:32:49 That is the update. Sep 28 01:32:52 Sorry. Sep 28 01:33:07 please don't put a blank line between decorator and function, keep them together Sep 28 01:33:13 Okay. Sep 28 01:33:16 Fine. Sep 28 01:33:32 also, is "Distance" still supposed to have two decorators? Sep 28 01:34:03 Off to change that and the last thing you mentioned. yes. One for the actual server and one for the "state" of my use on that server/web page. Sep 28 01:34:15 I think. Sep 28 01:34:18 Let me check. Sep 28 01:34:18 what? Sep 28 01:34:26 Hold on. Sep 28 01:34:30 Let me try to explain things. Sep 28 01:34:44 also / and / are conflicting routes Sep 28 01:34:48 Right! Sep 28 01:35:13 and your Distance function will never ever stop the motor Sep 28 01:35:27 also don't use uppercase for a function Sep 28 01:35:30 Oh. Sep 28 01:35:31 Fine. Sep 28 01:35:35 Got it. Sep 28 01:35:41 no uppercase for functions. Sep 28 01:36:20 no, uppercase is mainly used for classes (and for some reason python also uses them for some constants like True and None, although I think that's strange and gross) Sep 28 01:36:30 titlecase I mean, not all-uppercase obviously Sep 28 01:38:48 Right. I thought Python used CamelCase these days. Sep 28 01:41:21 I'd also be inclined to separate the web application part from the code that's actually controlling the motor (i.e. have a service that controls the motors based on commands and sensors, and if web control is desired use a separate web service for that that sends commands to the main service) ... but maybe you can get away with using a single process for both tasks when using the flask development ... Sep 28 01:41:27 ...server, depends a bit on what the main event loop of flask development server looks like Sep 28 01:42:15 using CamelCase for classes and lowercase for functions/methods and variables has always been the convention as far as I know Sep 28 01:42:29 Okay. Sep 28 01:43:00 For instance. Sep 28 01:44:50 I can use everything in that src file except for the def distance(take=None) function. Since that function is just the same thing as my def updates(state=None):, the server cannot work. Sep 28 01:45:11 you're giving them the same route Sep 28 01:45:26 I need the @app.route("/") decorator. Sep 28 01:45:37 It helps w/ the server first connection. I am pretty sure. Sep 28 01:45:44 you'd need to write a function for that Sep 28 01:45:53 or maybe you can use the update function Sep 28 01:46:16 The updates function works. This I know. I have done it many times and it still works. Sep 28 01:46:43 And yes. It was me. Sep 28 01:46:45 well it will not have worked in the version you showed where it didn't have a route Sep 28 01:47:04 I was routing both to the same server. Right. Sep 28 01:47:13 That did not work. Sep 28 01:47:20 the same function you mean Sep 28 01:48:26 The def updates() function works. The def distance() function works. Both do not work together b/c of me routing them to the same server at the same time. Sep 28 01:48:56 you had given def Distance three routes (assuming you're allowed to give a function multiple route-decorators, I don't know whether you are or not) Sep 28 01:49:27 This was my fault at 9:20 last night and I never changed it back. Sep 28 01:49:28 because you'd given them the same routes Sep 28 01:49:33 not "to the same server" Sep 28 01:49:35 Right. I cannot. Sep 28 01:49:38 Oh! Sep 28 01:49:47 a route is from some path or path-template to a function Sep 28 01:49:49 So, the routes is what i am giving them and not the servers. Yikes. Sep 28 01:50:04 but you told flask to route / to distance, and to route / to update Sep 28 01:50:12 Right. Sep 28 01:50:16 My fault. Sep 28 01:50:34 I already changed the src back to what works but I get the point. Sep 28 01:51:21 i should not use @app.route("/") and @app.route("/") simultaneously. Sep 28 01:51:28 Okay. Sep 28 01:51:35 So, I guess I should use another route. Sep 28 01:51:58 This may make things easier on me and you if you are still awake when I come to grips w/ how much I do not know. Sep 28 01:52:08 Anyway. Yea boy! Sep 28 01:52:26 Please hold for updated src. Sep 28 01:52:34 And maybe some functioning LEDs? Sep 28 01:52:47 e.g. you could give distance @app.route("/distance") since I honestly can't tell why it would need a parameter (I have no idea what the intended purpose of "take" it, although it won't work) Sep 28 01:53:15 Right. Sep 28 01:53:21 I was thinking not to go to another page. Sep 28 01:53:28 This was the delimma. Sep 28 01:53:37 ? Sep 28 01:54:13 I wanted to use the one, single page online for my request and/or denial of motor movement. Sep 28 01:54:18 So, for instance. Sep 28 01:54:41 you still need different URLs for different commands (and you do already have different urls for different commands) Sep 28 01:54:57 The page would show up and I would not need "/distance" as my second page. Oh! Sep 28 01:55:11 I don't really understand what you're saying Sep 28 01:55:21 I misunderstood. Sep 28 01:55:21 I'm not sure what the interface is you're trying to make anyway Sep 28 01:55:31 Copy and paste it. Sep 28 01:55:38 if you want the sonar to be checked automatically none of this will be very useful anyway Sep 28 01:55:51 (and presumably you do) Sep 28 01:56:02 Right. Thus far, none of what I have done works just yet. Sep 28 01:56:23 I mean. Everything but the sonar stopping all four motors. Sep 28 01:56:29 Via src. Sep 28 01:56:58 I just need to listen to what you said. I will test the "/distance" function. Sep 28 01:57:03 well if you give distance a separate decorator like @app.route("/distance") and remove the weird "take" argument and change the condition to "if distance <= 8:" then it should probably work Sep 28 01:57:14 Haq. Sep 28 01:57:16 Ha. Sep 28 01:57:17 Sorry. Sep 28 01:57:17 and remove that silly time.sleep(2) Sep 28 01:57:28 in fact remove every time.sleep Sep 28 01:57:30 Okay. Oh. That was what you were saying. Sep 28 01:57:33 Oh. Sep 28 01:57:43 No more time.sleep function. Sep 28 01:57:46 since they're not doing anything other than making your server slow Sep 28 01:57:47 Okay. Sep 28 01:57:55 Okay. Sep 28 01:58:07 It is for src and not for hardware capabilities. Sep 28 01:58:19 I have no idea what that sentence means Sep 28 01:58:22 Ha. Sep 28 01:58:27 No issue. Sep 28 01:58:36 Let me check something real quickly. Sep 28 01:58:46 btw is this rangeI.Range class my example class but renamed? Sep 28 01:58:53 Yes. Sep 28 01:58:55 It is. Sep 28 01:59:01 I changed it right away. Sep 28 01:59:12 ok Sep 28 01:59:13 Should I put your name on it? Sep 28 01:59:18 @zmatt? Sep 28 01:59:21 no Sep 28 01:59:23 Why? Sep 28 01:59:29 It is you, man! Sep 28 01:59:50 You participated and helped a funny believer work magic. Sep 28 01:59:52 it's a miniscule example Sep 28 01:59:56 Fine. Sep 28 02:00:00 one that's probably not even useful outside of testing Sep 28 02:00:13 since it waits synchronously for the next measurement Sep 28 02:00:13 I looked up the ideas revolving around import re. Sep 28 02:00:31 Right but it is useful. Sep 28 02:00:44 It makes this old hardware work like a charm. Sep 28 02:01:12 I think their co. whent out of business in 2017. I am not completely sure, though. That or their website needs to be updated. Sep 28 02:02:04 Anyway. I am about to update the source. I will let you know what happens if anything. Sep 28 02:07:18 set_: https://pastebin.com/xjTayk3w Sep 28 02:07:51 I've also made the motor stuff a bit more readable (and added a small optimization to the Motor class) Sep 28 02:08:41 Hey. Sep 28 02:11:33 I see where I took a left turn. Sep 28 02:12:48 The source on my end was way off. The def distance(): and then to call it later in the template_date line. Sep 28 02:13:18 Let me test it quickly if you are having doubts. Sep 28 02:13:27 Off to test! Sep 28 02:25:26 @zmatt: I changed it up again and again. I think the source is off but more in the correct path. Sep 28 02:28:00 is there a reason to @ me for this? you don't need to provide me with moment to moment narration of what you're doing Sep 28 02:28:22 Oh. No. I just saw your name had an @ in front of it. Sep 28 02:28:39 I was typing the @ in @zmatt too. Sep 28 02:28:40 that just indicates I'm a channel op here Sep 28 02:28:46 op? Sep 28 02:28:55 but with "@ me" I meant address me Sep 28 02:29:01 Oh. Sep 28 02:29:02 No. Sep 28 02:29:06 I can leave you be. Sep 28 02:29:09 No issue. Sep 28 02:29:21 Waiting for others now! Sep 28 02:29:47 I guess I am sort of clingy since you chat the most. Sep 28 02:29:56 But...keep that on the hush! Boy! Sep 28 02:30:16 thanks. if you're stuck and want feedback then just share the link, but complaining about your source code while not sharing the source code to obtain feedback is just pointless and annoying Sep 28 02:30:36 Aw. Now, I get it. Sep 28 02:30:43 Sort of. Sep 28 02:35:19 https://pastebin.com/xjTayk3w is your source you posted regarding the ez2 sensor and motors on the BBBW w/ a .html file online. Sep 28 02:37:03 It runs but there is something missing. Do I need to add context or a name, distance, in my .html file in the templates dir? Sep 28 02:37:39 what do you mean? Sep 28 02:38:00 I have no idea what's in your HTML, I just took a guess at what the "title" attribute was supposed to be in distance() Sep 28 02:38:27 Okay. Sep 28 02:38:51 Oh. Sep 28 02:39:42 What do I mean? I will tell you. I think I might need a separate page/html file. Is this correct? Sep 28 02:39:55 btw it's possible that you need to change the order of your two functions, since '/distance' and '/' still overlap and I don't know if '/distance' will get prioritized... the flask docs are unclear about that Sep 28 02:40:04 I don't know... for what? Sep 28 02:41:00 Okay. Sep 28 02:41:05 No issue. Sep 28 02:41:39 if you want to invoke the distance function just go to http://beaglebone.local/distance or something like that (replace "beaglebone.local" by whatever hostname or ip you're using to reach your beaglebone) Sep 28 02:42:01 For the function, I think I should most likely need the "/distance" file as a separate file. Sep 28 02:42:02 Oh. Sep 28 02:42:03 Okay. Sep 28 02:42:18 More pages. Sheesh. Sep 28 02:42:25 I mean, that depends on whether you want it to return a different result page Sep 28 02:43:00 No. That is not what I desire. I will review the Flask docs. Sep 28 02:43:10 Anyway, thank you as always. Sep 28 02:48:04 to avoid all ambiguity you should probably avoid any overlap between routes, i.e. instead of "/" use something like "/set/" (so the urls the various update commands become "/set/F" etc) Sep 28 02:51:41 Okay. **** ENDING LOGGING AT Sat Sep 28 02:59:59 2019