Trying to build the ParaSail compiler on Windows 7 with Cygwin

61 views
Skip to first unread message

Marius Amado-Alves

unread,
Aug 22, 2018, 6:41:15 AM8/22/18
to ParaSail Programming Language

See "master" topic for earlier issues and great tips from Tucker, thanks a lot.


Ignoring permission warnings.

Removed termcap dependency.

Trying to link readline: added paths (-L option) to linker options in build/parasail.gpr, build/test_runtime.gpr and interpret/rl_c_interface.adb


   package Linker is

      --  Remove termcap dependency, for Cygwin environment

      for Default_Switches ("ada") use

      (

          "-g",

          "-L/usr/lib",

          "-L.",

          --  Follows a bunch of paths for readline on Cygwin (Alves).

          "-L/cygdrive/c/cygwin/bin/", -- cygreadline6.dll

          "-L/cygdrive/c/cygwin/lib/", -- libreadline.a, libreadline.dll.a

          "-L/cygdrive/c/cygwin/lib/python2.5/lib-dynload", -- readline.dll

          "-L/cygdrive/c/cygwin/usr/include/readline" -- readline.h, *.h

      );

      --  Original (Taft):

      --  for Default_Switches ("ada") use ("-g", "-L/usr/lib", "-L.", "-ltermcap");

   end Linker;

 

 

   --  In Cygwin environment (Alves):

   pragma Linker_Options("-L/cygdrive/c/cygwin/bin/"); -- cygreadline6.dll

   pragma Linker_Options("-L/cygdrive/c/cygwin/lib/"); -- libreadline.a, libreadline.dll.a

   pragma Linker_Options("-L/cygdrive/c/cygwin/lib/python2.5/lib-dynload"); -- readline.dll

   pragma Linker_Options("-L/cygdrive/c/cygwin/usr/include/readline"); -- readline.h, *.h

   pragma Linker_Options ("-lreadline");

   --  Original (Taft):

   --  pragma Linker_Options ("-lreadline");

 

Still readline not found.

make clean (had to remove some files by hand)

new error

- ../../../aflex_ayacc/aflex/aflex.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/aflex_misc.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/dfa.adb

dfa.adb:88:05: warning: variable "STATE_VAR" is never read and never assigned

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/external_file_manager.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/gen.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/main_body.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/misc_defs.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/template_manager.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/tstring.ads

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/int_io.ads

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/ccl.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/ecs.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/nfa.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/skeleton_manager.adb

skeleton_manager.adb:318:05: warning: variable "LINE_LEN" is never read and never assigned

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/tblcmp.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- D:\ParaSail\parasail_release_7_0\aflex_ayacc\aflex\GEN\parse_tokens.ads

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- D:\ParaSail\parasail_release_7_0\aflex_ayacc\aflex\GEN\scanner.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/aflex_command_line_interface.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- D:\ParaSail\parasail_release_7_0\aflex_ayacc\aflex\GEN\aflex_parser.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/file_string.ads

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/vstrings.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- D:\ParaSail\parasail_release_7_0\aflex_ayacc\aflex\GEN\parse_goto.ads

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- D:\ParaSail\parasail_release_7_0\aflex_ayacc\aflex\GEN\parse_shift_reduce.ads

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- D:\ParaSail\parasail_release_7_0\aflex_ayacc\aflex\GEN\ascan_dfa.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- D:\ParaSail\parasail_release_7_0\aflex_ayacc\aflex\GEN\ascan_io.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/sym.adb

gcc -c -I../../../aflex_ayacc/aflex/ -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -I- ../../../aflex_ayacc/aflex/aflex_scanner.adb

gnatbind -I../../../aflex_ayacc/aflex -I../../../aflex_ayacc/aflex/GEN -x aflex.ali

gnatlink aflex.ali -o ../bin/aflex.exe

rm -rf parasail.y parasail_lex.l parasail.verbose

cp ../parasail.y ../parasail_lex.l .

bin/ayacc parasail.y verbose "=>" on

 

  Ayacc (File           => "parasail.y",

         C_Lex          => Off,

         Debug          => Off,

         Summary        => On,

         Verbose        => On,

         Error_Recovery => Off,

         Extension      => ".adb");

 

Ayacc: Error Opening "parasail.y".

bin/aflex -s parasail_lex.l

 

raised ADA.IO_EXCEPTIONS.USE_ERROR : parasail_lex.l: Permission denied

make[1]: *** [../gen/parasail_tokens.ads] Error 1

make[1]: Leaving directory `/cygdrive/d/ParaSail/parasail_release_7_0/parser/build'

make: *** [parser] Error 2

Tucker Taft

unread,
Aug 22, 2018, 8:37:00 AM8/22/18
to ParaSail Programming Language
It sounds like you un-zipped the ParaSail archive using a different user ID than you are using for doing the build (or simply preserved the user ID from the zip archive), which is leading to the various permission problems.  You might want to change the ownership on all of the ParaSail files to be your current user ID.  At a minimum, you could delete all the files in the "parser/gen" subdirectory.

Hope that helps!
-Tuck

--
You received this message because you are subscribed to the Google Groups "ParaSail Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to parasail-programming...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Marius Amado-Alves

unread,
Aug 22, 2018, 10:09:41 AM8/22/18
to ParaSail Programming Language
You're right! thanks. Permissions problem seemingly solved. Now back to the readline problem.
...
gprbuild -p -p -g -O0 -gnato -gnata -gnatE -gnat95 -P build/parasail -largs
Compile
   [Ada]          rl_c_interface.adb
Bind
   [gprbind]      parasail_main.bexch
   [Ada]          parasail_main.ali
Link
   [link]         parasail_main.adb
d:/gnatpro/18.1/bin/../libexec/gcc/i686-pc-mingw32/6.4.1/ld.exe: cannot find -lcygreadline6
collect2.exe: error: ld returned 1 exit status
gprbuild: link of parasail_main.adb failed
make: *** [parasail] Error 4

There's a shitload of readline libraries on my system, which paths I've included in the .gpr and .adb files (see below). Why can't the linker find them? Might it be prepending "lib" or something? How avoid that? And append ".dll", or ".a"? Or is it searching for ".o"? Thanks. Not pressing at all. Will deploy a Linux machine eventually.

Tucker Taft

unread,
Aug 22, 2018, 10:37:14 AM8/22/18
to ParaSail Programming Language
In the short-term, I suggest you comment out the "with RL_C_Readline" in parasail_main.adb, which should then allow you to build without any dependence on readline.  Meanwhile you could pass a "-v" flag to the builder to see what is the exact "ld" command that is being invoked, and perhaps try to do that yourself on the command line to see if you can reproduce the problem.

-Tuck

Marius Amado-Alves

unread,
Aug 23, 2018, 4:00:15 AM8/23/18
to ParaSail Programming Language
Excellent advice, thank you.
Readline dependency removed, parasail_main.exe built:-)

Martin Vahi

unread,
Aug 27, 2018, 7:22:02 AM8/27/18
to ParaSail Programming Language

I do not know anything about the Windows 7 ans/or CygWin part
of the answer to Your question, but I can point out that the
Windows 7 can/might/should be upgraded to Windows 10 or at least that's what they advertise.
I've tested the upgrade operation only once, when the free upgrade campaign was active,
so I do not know, whether it still works. On the newest, upgraded, Windows 10 there is
the Ubuntu Linux userland layer AVAILABLE BY DEFAULT,
meaning, there is no need for CygWin any more.
May be there is the issue, that the "Home Edition" doesn't have it
and the "Professional Edition" of Win10 has it, I do not know for sure.
Once upon a time there was such problem. The corporate social storms
and megacorporations, including Microsoft, go hand in hand, so
one never knows, what they have messed up again.

https://docs.microsoft.com/en-us/windows/wsl/install-win10
(archival copy: https://archive.is/uUdNQ )

http://wsl-guide.org/

(an old, 2017, video for amazement that it is really true)
https://www.youtube.com/watch?v=PP_T_m0UV9E

One way to test out the WSL is to use a VirtualBox virtual appliance
straight from Microsoft:

https://developer.microsoft.com/en-us/windows/downloads/virtual-machines

I even archived a screenshot that demonstrates the WSL
at a clone of the Microsoft official Windows 10 virtual appliance:

https://archive.softf1.com/2018/political_images/resistance_is_futile/2018_07_30_Windows10_Microsoft_Official_Demo_VM_in_VirtualBox_has_Bash_by_Default_01.png

In think that the investment of Your time is more fruitful, if
You stop tinkering the CygWin version and just adopt the WSL version,
if Windows is what You really want to run at all. Windows 7 can
run the VirtualBox

https://www.virtualbox.org/

that can run a virtual appliance that just happens to run Windows 10

Than You for reading my comment :-)

Marius Amado-Alves

unread,
Aug 28, 2018, 5:17:09 AM8/28/18
to ParaSail Programming Language
Yes, I should upgrade to Windows 10 and will eventually, the WSL being a big motivation, but I'll check with colleagues if it really replaces Linux. I wonder about GUI (X, Gnome...) programs for example.

Right now I'm very happy with wonderful Cygwin on Windows 7 (Enterprise) running ParaSail programs:-)

FWIW Microsoft supporting Linux does not surprise me at all. It's a kind of convergence. Eventually the actual OS wont matter. It's all just "apps" for the common user.


Marius Amado-Alves

unread,
Aug 28, 2018, 5:19:44 AM8/28/18
to ParaSail Programming Language
I just cannot imagine how Microsoft EULAs and "viral" open source licences can play along. With an army of lawers I guess.

Martin Vahi

unread,
Sep 4, 2018, 2:16:36 PM9/4/18
to ParaSail Programming Language

My current comment has nothing to do with ParaSail or other programming languages or Computer Science. My current comment is about "desktop computing", issues that surround it, some related political philosophy.

>...

> Yes, I should upgrade to Windows 10 and
> will eventually, the WSL being a big motivation, but
> I'll check with colleagues if it really
> replaces Linux. I wonder about
> GUI (X, Gnome...) programs for example.
>...

I do not know, what works for You/others, but over the years I have resorted to a solution that I have a bunch of computers that share a monitor through a media switch, unless they have their own monitor(think laptops). The computers form a single "cluster-workstation" by VNC connections, sshfs connections, plain SSH terminal sessions. SSH connections are without passwords, with SSH keys. The direction of the connections, which computer logs into which other computer, follows the "Hollywood principle": "Don't call us, we'll call you". That is to say, the computer that forms a higher security zone, logs in to a computer that forms a lower security zone. The Hollywood principle is applied to all connections, including sshfs mounts and VNC sessions. If the computers were graph vertices then the SSH/VNC/sshfs connections would be directed edges and the graph in text form would look like:

main_workstation --> file_server
main_workstation --> Raspberry_Pi_with_Raspbian_Linux
Raspberry_Pi_with_Raspbian_Linux --> file_server

A very long time ago, when I used a Windows machine as one of my main development machines, I had some success with a then-current version of 

https://www.nomachine.com/

I do not know for sure, but from somewhere I have a hazy memory that one of the main tricks that the nomachine VNC solution used to get its snappy reaction time was that it did not transfer pixels from server side to the client side, but it used some GUI protocol and drew the GUI changes on the client side instead. One problem with SSH connections is that they do not tolerate shoddy internet connections, but on LAN they work fine and the sshfs mounts can stay up for weeks. If there's a need to copy larger files to somewhere outside of LAN, even when the connection between LAN and the destination is without any wireless links, then the BitTorrent analogue for uploading jobs is a program called Unison.

https://www.seas.upenn.edu/~bcpierce/unison/

The Unison can be seen as a fancy version of an SSH based "scp". The Unison creates a new SSH connection if the old SSH connection breaks/dies. Unison copies the files part by part till all of the files are fully copied, regardless of temporary network failures. If the Unison is in the midst of copying a 100GiB file, then it's OK to pull out the network cable and reconnect the network cable. It just continues, were it left off, just like BitTorrent downloads can be paused and continued, except that the Unison can also be used for both, uploading and downloading, and the Unison can do it over SSH. There's a requirement that the Unison version on the SSH client side matches with the Unison version on the SSH server side. My repackaged versions of Unison deliverables MIGHT be available from

(I am NOT a Unison developer and there are
NO GUARANTEES for this link to work.)
https://technology.softf1.com/software_by_third_parties/Unison/

As for SSH pipes/tunnels, I find the SSH tunnel creation command line arguments so hard to understand that I created a Bash script template for coping with that:

https://github.com/martinvahi/mmmv_notes/blob/13bdd26521ae60cafe6bfac0ee48fdb83da096fd/mmmv_notes/mmmv_utilities/src/various_Bash_scripts/ssh_tunnel_t1.bash#L1
(archival copy that needs some scrolling:
https://archive.is/TMc7k )

One very helpful trick that I use is that to avoid loosing important files like the Linus Torvalds famously did

http://lkml.iu.edu/hypermail/linux/kernel/1309.1/01669.html
(archival copy: https://archive.is/IhawB )

I keep all of my important files on magnetic hard disks, but to reap the benefits of the speed of the SSDs, I use symlinks to force IDEs and other programs to place their auto-generated temporary files on an SSD that is dedicated to auto-generated temporary files. If the SSD wears out, almost nothing is lost, I just have to create a few folders to a new SSD and the rest will be autogenerated. The SSD is also very useful, when recording screen videos or converting videos from one format to another. As the storage space of SSDs tends to be much more expensive than the storage space of magnetic disks, this solution is also much more cheaper than a pure SSD solution. Archiving is not an activity that takes full advantage of the "extra" speed of the SSD and the wearing related failure of SSDs, for example, when that part of the SSD that does not hold archivable files wears out, is a serious drawback in addition to the higher price. The

http://man7.org/linux/man-pages/man8/fstrim.8.html
(archival copy: https://archive.is/8Vc8e )

should be placed to a cron job, when using SSDs.

One of the problems with all hard disks, both the HDD and SSD, is that the Linux kernel tends to freeze the whole system during HDD/SSD access. What I've heard, I could be wrong, is that this is the reason, why web hosting companies prefer BSD over Linux. As P2P systems share data/files, they have a lot of HDD/SSD traffic, which really slows Linux systems down noticeably. That's another reason, why a "cluster-workstation" is far superior than one huge workstation: due to the system freeze, the "bottleneck" is the HDD/SDD, not network, not CPU.

>...

> I just cannot imagine how Microsoft EULAs
> and "viral" open source licences
> can play along. With an army of lawyers I guess.
>...

My totally _out_of_topic_answer_/_declaration_of_interests_ is that my personal relationship with the Micro$oft is described at my home page, at

https://longterm.softf1.com/biased_history/2005_microsoft_hired_inorek_and_grey_to_lobby_for_software_patents/
(archival copy: https://archive.fo/fmiT9 )

In my opinion the GitHub owners betrayed the open source community by selling GitHub to the Micro$oft.

https://news.microsoft.com/2018/06/04/microsoft-to-acquire-github-for-7-5-billion/
(archival copy: https://archive.is/FlirP )

As of 2018_09 I think that the future of open source software code hosting will be at least party based on P2P systems. An example of that is the ZeroNet based GitCenter.

(This link MIGHT be broken, but
it's a link to a gateway that allows to
take a peek into some ZeroNet corners
by visiting a plain www page.
ZeroNet "URL" of the ZeroNet page is
"/1GitLiXB6t5r8vuU2zC6a8GYj9ME6HMQ4t/repo/?19t2vGe6Vmkou1rhJDjpsQoW8aCD2EWEFC")
https://www.zerogate.tk/1GitLiXB6t5r8vuU2zC6a8GYj9ME6HMQ4t/repo/?19t2vGe6Vmkou1rhJDjpsQoW8aCD2EWEFC

One option for P2P based package distribution, code repository hosting, is to combine some ZeroNet/FreeNet/etc. based "web pages" with some P2P-world-FTP-analogue, may be 

https://ipfs.io/

The core of the idea is that the web pages publish book-keeping information and the repository data is packaged in tar-files that are named according ot their size and secure hash. That way anybody can serve the tar-files without having a capability to secretly modify them and the integrity of the tar-files can be verified without unpacking them. I even have a Bash/Ruby script for doing exactly that

(It's horribly slow, because it truly stupidly
reinitiates the whole Ruby interpreter a lot of times.
Initially I wanted to make it lightweight and thought that if I
write it in Bash and use "standard commandline tools",
then it will be relatively lightweight, but in the midst
of development I found out that the commandline tools
work differently on Linux and BSD, but Ruby stdlib
works the same way on both, so I ended up doing
a much grander version of exactly what I initially,
knowledgeably, wanted to avoid: reinitialize the
Ruby interpreter many times. On the other hand the
script is feature-complete for me, so as long as I have
other components that need development, I am not
motivated to rewrite it. First command line argument
"help", without the quotation marks, displays usage instructions.)
https://github.com/martinvahi/mmmv_devel_tools/blob/3674bdf5585f5565ebd134f0c5a27a12d8c0106c/src/mmmv_devel_tools/silktorrent/src/silktorrent_packager_t1.bash#L1
(archival copy: https://archive.is/lm93C )


The ZeroNet was created by one of ThePirateBay founders, the Peter Sunde, as a replacement solution to their centralized ThePirateBay server park. The Peter Sunde(ZeroNet username: nofish) gives a really nice description of the history of ThePirateBay at one of his interviews at 

(I found that interview fun to watch,
but it has nothing to do with computer science or math.)
https://www.youtube.com/watch?v=3MjCM1e87kA

There are a lot of different P2P systems and P2P-system-like hardware projects, as listed at one of my wikies

https://www.softf1.com/cgi-bin/tree1/technology/flaws/silktorrent.bash/wiki?name=List+of+Similar+Projects
(archival copy: https://archive.is/PCYZN )

but in my 2018_09 opinion many of them have nice ideas, but hopelessly crappy implementation and the best 3 candidates according to my 2018_09 very subjective taste are:

(I am NOT a ZeroNet developer,
but the ZeroNet is my favorite.)
https://zeronet.io/ 

(In my opinion the IPFS is an
FTP analogue of the P2P world. It has its niche.)
https://ipfs.io/

(In my opinion the Beaker/Dat is almost like
ZeroNet, but with nasty dependencies, insufficient modularity,
but the more P2P network projects there is, the better,
because if the developers of one project are stopped,
then other projects might still continue.)
https://beakerbrowser.com/
https://www.youtube.com/watch?v=pi-kreA52oI
https://github.com/beakerbrowser/beaker

The e-mail of the P2P world seems to be the

https://bitmessage.org/

but its GUI needs heavy re-work. As of 2018_09 it seems to me that one major issue with most of the P2P software projects is that they heavily depend on the presence of the quite centralized "internet", where the first censors can be the "internet service providers"(ISP), who in turn connect to a pretty hierarchical system. That explains part of the technical "success" of the Great FireWall of China. (Quotes around "success", because a functional censorship system does not look like a lot of success to me.) What regards to crypto-currencies, then my personal opinion is that they are technically flawed (weak crypto, failure to scale, lack of decentralization) and socially plain pyramid schemes combined with some gambling. As of 2018_09 probably the best blog article that I have read about the crypto-currencies is

(Background: he is an Estonian-Russian,
who speaks Estonian without any accent, but
has Russian as his first language. I do not
know, what he does in 2018, but he worked
as a lecturer at the University of Tartu in
about 2006 or so. That explains, how I knew
to look for his blog.)
http://fouryears.eu/2017/07/09/the-blockchain-consensus-problem/


In conclusion I write that given the various hardware trends, the end of Moore's law, the adoption of specialized hardware like the various FPGA solutions and the Google Tensor Processing Unit(TPU), the workstation of the future will probably be in the form of some kind of a "personal cluster", even if that "personal cluster" fits onto a single motherboard or a single cabinet. P2P systems need a lot of HDD/SSD IO by nature and the various HDD/SSD devices of the personal cluster can work in parallel to offer bigger HDD/SSD data rates. In the past households had book shelves. In the future households will probably have "book shelve clusters" that serve as a household private data vault for books, movies, music, "home videos", "family photos" and run the various P2P servers. May be some computers of the "book shelve cluster" orchestrate the various IoT devices and computerized home("smart" home) devices.


Thank You for reading my post/comment :-)

P.S. If You wonder, why did I write this long text, then my answer is that it took me a while to figure out over the years, how to properly construct my "workstation" without wasting a lot of money and this blog post/comment is meant to be a summary, documentation, of what I have come up with. The topic of how to create/manage a personal workstation got raised here so vividly that I thought that I might as well just write it all down at once and then later use references/links to this "blog post" whenever I see someone else raising the same question.

Reply all
Reply to author
Forward
0 new messages