I don't see why you couldn't get all three with JavaScript. A web application built in JavaScript (React) can be ported into Electron <https://www.electronjs.org/>, which enables cross-platform desktop applications. In other words: one language, one application, all platforms and mobile devices.
I've worked on some very sophisticated dashboards that were built for the web, and I'm of the mindset that there is simply no need for complex low level languages like C/C++ in the user interface domain, unless you're dealing with low level embedded systems or something like that. But this problem isn't in the space of embedded systems; it's in the space of mobile/desktop applications. Thus, in my humble opinion, cross-platform mobile/desktop applications are best left to modern user interface technologies like JavaScript/TypeScript and the frontend ecosystem built with it. On Wed, Jun 30, 2021 at 10:10 AM Linas Vepstas <[email protected]> wrote: > > > On Tue, Jun 29, 2021 at 11:49 PM Lansana Camara <[email protected]> wrote: > >> Linas, >> >> Dashboards -- well, when I say dashboard, what I think of are things like >>> the BIOS boot-up screen -- menus and lists and configurable parameters and >>> you can navigate it with keyboard or mouse. My wifi router has a dashboard >>> -- it's a web page, you can configure wifi settings in it. My (android) >>> cell phone has one: it's the "settings" panel: you can change this or that >>> setting, turn things on and off. >>> >> >> >> So I'm thinking the same thing but for generic data science with opencog. >>> Take this file, copy it to that directory, start this script, look at >>> diagnostic output, wait until the dataset is done, and when it's done, >>> paint a green dot, and if it crashed, paint a red dot. That kind of stuff. >>> Show me a graph of megabytes used so far, cause I have a datacap of 1 >>> million atoms per month. JK.😂 >> >> >> What you're asking for here is basically what they pay me the big bucks >> in Silicon Valley to build on a 9-5 schedule 😂 >> > > Sigh. It shouldn't be like that. I won't create a GUI mockup, for two > reasons: first, this is something that artists and designers do, when > trying to take an existing system to the next level. Right now, we don't > have anything basic. Second, these kinds of things best evolve through > regular use: you use it for a while, and if it stinks you stop using it, or > you alter it so it works right. It's very hard to predict what that might > be in advance. Also, processing steps evolve, flows change. The flow from > last month might no longer apply this month. The process changes; the GUI > needs to be malleable. > > Now, back in the day of desktop apps, there was this thing called a "gui > designer". It allowed you to drag-n-drop menus, text-boxes, buttons, plots, > charts, change their color, font size, stuff like that. You could hook them > up to code that "did stuff": there was an editor, and you'd fill in the > blank: on button-press, do this. On double-click, do that. If you never > used one, you should try it. They're awesome! The one for Gnome/GTK is > glade -- https://glade.gnome.org/ > > Is there something like this for React and/or Angular? > > I am confusing you and I am confusing myself, because I am talking about > three different things. > > 1) An atomspace visualizer. This would be for complete beginners, and > would be a web-javascript thing, so that we could stick it on a website, > and allow people to dink with it, without having to install anything at > all. Bonus: it runs on tablets. > > 2) A dashboard. I'm starting to think that maybe using Glade and GTK to > build a desktop app is not a bad idea. The only thing wrong with that is > it wouldn't run on cell phones and tablets. > > 3) A science exploration ... system/journal. Perhaps Jupyter is the best > choice for this. The most deeply flawed problem with Jupyter is revision > control. If you change one line of code in Jupyter, and do a diff, you get > thousands of lines of code changed. That sucks: that makes using git > completely useless. I'm told that there are some maybe-solutions for this, > but I haven't really looked/tried. > > In some ideal world, a combination of all three would be best. I guess. > > -- linas > > >> As previously stated, I really don't mind spinning up some boilerplate, >> such that a new frontend developer familiar with React and other modern >> technologies can get up and running with little hesitation. That would >> literally take me a day or two or effort, tops. But it wouldn't really >> include any functionality -- it'd just include the foundation to build >> functionality on top of. >> >> If you want a full on production-ready dashboard/control panel >> experience, with data visualization and data management...that is a >> different level of responsibility. Even if it isn't built from scratch, >> plugging your data into a pre-built system is not necessarily more trivial. >> >> As someone that doesn't have the full context of opencog/atomese that you >> have, it would be much easier if you could draw up some wireframes (or go >> to Upwork.com and hire a graphic designer to build some wireframes for like >> a measly $100) of the screens you're imagining in your mind. Once I see >> those screens, it will be much better for me in terms of figuring out the >> scope of work required here, which I can then clearly communicate back to >> you. >> >> On Tue, Jun 29, 2021 at 12:08 PM Linas Vepstas <[email protected]> >> wrote: >> >>> Reslav, (and Micheal ... below) >>> >>> Thanks! That is a very nice summary. I'm not sure quite where that >>> leaves me, except maybe back at square-one. I'd like to see some kind of >>> cute graphical atomspace browser that beginners could run, and ... ideally, >>> run the demos from the examples directory. >>> >>> Kind of unrelated to that is that I would like to have a data science >>> dashboard. So, what Mike says about MOZI -- but I am not working on >>> bioinformatics, I am working on learning. I have similar needs: I have >>> datasets that need to be managed and loaded. I have data-mining jobs that >>> run for hours (or longer). I have to start, stop, checkpoint things, make >>> backups. Then when I'm done, I need to make charts and plots to see what >>> happened. >>> >>> Currently, I do the above with a strange brew of README files, bash >>> scripts, config files, gnuplot, and the LyX word processor. I have found >>> that 99% of potential collaborators do not have the attention span to get >>> to the end of a README file. You have to be super-duper motivated to read >>> it, and follow the instructions. So I'm thinking that, vaguely, surely, >>> there must be some way of converting that into some kind of interactive web >>> pages that walk you through the steps. >>> >>> Again: MOZI has built something like this, but it is custom-tailored to >>> bioinformatics. And so I can't use any of it. If it was general purpose, >>> there would be the benefit of shared development: anything done by one >>> project (e.g. learning) could be used in another project (e.g. >>> bioinformatics). >>> >>> Dashboards -- well, when I say dashboard, what I think of are things >>> like the BIOS boot-up screen -- menus and lists and configurable parameters >>> and you can navigate it with keyboard or mouse. My wifi router has a >>> dashboard -- it's a web page, you can configure wifi settings in it. My >>> (android) cell phone has one: it's the "settings" panel: you can change >>> this or that setting, turn things on and off. >>> >>> So I'm thinking the same thing but for generic data science with >>> opencog. Take this file, copy it to that directory, start this script, >>> look at diagnostic output, wait until the dataset is done, and when it's >>> done, paint a green dot, and if it crashed, paint a red dot. That kind of >>> stuff. Show me a graph of megabytes used so far, cause I have a datacap of >>> 1 million atoms per month. JK.😂 >>> >>> Is there some kind of generic data science dashboard out there, that we >>> could adapt and use for managing opencog systems? >>> >>> --linas >>> >>> >>> On Tue, Jun 29, 2021 at 12:08 PM Reslav Hollos <[email protected]> >>> wrote: >>> >>>> TypeScript is a language, a superset of JS that adds syntax for >>>> optional types (which are extremely helpful). It can be used for React as >>>> well and for any other JS project. >>>> >>>> Angular is a UI framework which is in my opinion over-engineered and is >>>> built on top of bad practices like mutations (eg. two way data binding). >>>> Mutations are useful when performance is needed, but if not encapsulated >>>> tend to be the cause of too many hidden bugs difficult to detect or even >>>> fix. Newcomers I mentored had problems with Angular since it required too >>>> much knowledge to contribute even a little. Another example is the >>>> model-view-presenter structure which I've found to be hard to maintain on >>>> large projects, it was confusing to too many people and allowed for >>>> mistakes to happen very easily. Having such complexity at the very >>>> beginning takes focus away from the application. >>>> >>>> React is a UI library which I believe got it right from the start, it >>>> revolves around separation of concerns, app state propagates hierarchically >>>> downwards (unidirectional data flow) and changes are done with callbacks >>>> instead of directly mutating (these are called controlled components). >>>> Mutations can still be used, but are not used by default. React uses >>>> virtual DOM and an algorithm called 'reconciliation' that determines when >>>> and what to update in the DOM, since state changes generate new objects, to >>>> me it's simpler than Angular's Change Detection. All of which is debatable >>>> but in React things have mostly worked out of the box for me, while in >>>> Angular there were many times an extra step, a solution to a problem that >>>> should not have existed in the first place and felt like a workaround. >>>> React has JSX syntax that combines HTML and JS and recent updates added >>>> 'hooks' syntax which even more simplifies the state management. >>>> >>>> In short I think that React based projects have bigger chances for >>>> community contributions because of ease of use. >>>> >>>> About NPM, it can sometimes be tricky but I think it's manageable, it >>>> shares some problems/solutions from many different package managers, like >>>> mismatch of node version between dev environments, incorrect handling of >>>> package-lock.json (a file that hardcodes all dependencies of dependencies >>>> versions) or some library incompatibilities with another library which >>>> solution is usually in github issues comments. I use NPM in all JS >>>> projects. >>>> >>>> This is based on the experience I accumulated over the last 6 years. >>>> >>>> Reslav >>>> >>>> On Tue, Jun 29, 2021, 16:19 Linas Vepstas <[email protected]> >>>> wrote: >>>> >>>>> >>>>> >>>>> On Tue, Jun 29, 2021 at 8:57 AM Reslav Hollos <[email protected]> >>>>> wrote: >>>>> >>>>>> I'm also interested in AtomSpace UI and have had very pleasant dev >>>>>> experience with React (as well as TypeScript which I would recommend). >>>>>> >>>>> >>>>> Well, the current code is in "Angular" -- and is TypeScript. How >>>>> different is that? Are Angular and React two different versions of the >>>>> same thing, or are they completely different? I can code in javascript >>>>> just >>>>> fine, but things like npm and etc. leave me stumped -- when there's a >>>>> problem, I don't know how to debug it. >>>>> >>>>> --linas >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "opencog" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected]. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/opencog/CAHrUA34hy9RZBg897pPX-hwhkcf_%2BbHmE%2B4QRSsE60p%3DnjKb9Q%40mail.gmail.com >>>>> <https://groups.google.com/d/msgid/opencog/CAHrUA34hy9RZBg897pPX-hwhkcf_%2BbHmE%2B4QRSsE60p%3DnjKb9Q%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "opencog" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/opencog/CANHDs8%3DrtH%3DUwMb5zwetbX9UPk3XiFnTnw2hy--aNmDqXkr3%3DA%40mail.gmail.com >>>> <https://groups.google.com/d/msgid/opencog/CANHDs8%3DrtH%3DUwMb5zwetbX9UPk3XiFnTnw2hy--aNmDqXkr3%3DA%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> >>> >>> -- >>> Patrick: Are they laughing at us? >>> Sponge Bob: No, Patrick, they are laughing next to us. >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "opencog" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/opencog/CAHrUA34UVtF9vnOua5YOEVQuwZo_Z3PJkNZGVVYaC3H4yNUycg%40mail.gmail.com >>> <https://groups.google.com/d/msgid/opencog/CAHrUA34UVtF9vnOua5YOEVQuwZo_Z3PJkNZGVVYaC3H4yNUycg%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "opencog" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/opencog/CAPPXERrZ5tpm5HD-nQxs09ykEUERzQ0hAcytrahzU_vE-UBhdg%40mail.gmail.com >> <https://groups.google.com/d/msgid/opencog/CAPPXERrZ5tpm5HD-nQxs09ykEUERzQ0hAcytrahzU_vE-UBhdg%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > > > -- > Patrick: Are they laughing at us? > Sponge Bob: No, Patrick, they are laughing next to us. > > > -- > You received this message because you are subscribed to the Google Groups > "opencog" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/opencog/CAHrUA37ba8zJnEodzavpSo3hF6b6nAt0Q2rmAvvZC93i%2BCLa_Q%40mail.gmail.com > <https://groups.google.com/d/msgid/opencog/CAHrUA37ba8zJnEodzavpSo3hF6b6nAt0Q2rmAvvZC93i%2BCLa_Q%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "opencog" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/opencog/CAPPXERpJ1kXpzEZSj8ENMWQdutnu-N4Wa0oTBMpc%2B4x1Ph56Bg%40mail.gmail.com.
