Welcome to GleebleGlob.Club

Home of GG CLI & API GleebleGlob is something we came up because it was funny - it doesn't mean anything.

Thanks for that, Saarang.

To describe GleebleGlob, I'm going to use its initialism rather than its expanded form: GG.

The domain however, we will always argue, is the greatest domain known to humanity.

(Good luck remembering it, as we've all gone through mistakes of geebleglop, beegleblog, gooblegleb, ...) StormHacks Track: Social / Connectivity

GG fits into the Social / Connectivity track of the SFU Surge StormHacks 2024 Hackathon, which GG was created during/for.

But... what does GG do in this track?

To put it simply, GG enhances your social experience in the terminal, with digital connectivity in the form of convenient video sharing among friends.

GG is like YouTube, but for private videos shared among your friends, and viewed entirely from the terminal, in ASCII.

Yeah, that's right, friggin' ASCII.

Here's some video frames, generated by GG in ASCII, and scaled by nearest-neighbour to the screen size of a VT100 (80 chars by 25 chars):

==+=====-=-==-====++++====+++++++++++++=:..  ..=++==++==+=======================
++++===---===++++++++******+***++**++*:         .+++++++++++++++=====+++++++++++
++========+*****+====+**+***********+:.     ..    ++**+++++++++++=-----=++++++++
======+*********::::::***********#@@*. ..         =**************::....:########
===++**########*--:::*######%%%%%%%%%%.-::-:....-%%%%%%%####%%%%#*-:::::########
++*####%%%%%%%%%#:::%%%%%%%%%%%%%%%%%%%=:......=%%%%%%%%##%%@@@@%##-...*########
:..  ...=##%%%%#*::.+%%%%%%%%%%+--:::::::::....%%%%%%%%%%%%%%%%%###.   :##=-..  
====    ....##%.    .%%%%%%%%*-.:     .:.::-   .%%%%%%%#%%%%%%%###*   .:...     
+*++++-:     :##     -%%%%%%-. ..     .....:::  ....-::=+++++++++=. ::.....     
===+++=--:    .#:     %@@@@%:..    ..:-:...:::             +*****..:......      
===++++*+::.   =*     .%*=+::..:.-======---...                .-     .  ...::::.
==++++++=-::   .%.           :+-=--===::::-=                           .:----:--
++++++==--:.   =%@.         .:+=--=--:=--==-=*++.                     .:.   :-==
+++++=---:.   .=##@%%*=      ==*===-+=:-=++=+*+=:                 .     ..:-=+++
+++===-::.    :%%@%@@%%@@@*##++==-==------=++++=.         %%%%%@@@%%%.=.==++++**
++===--:       =#@@@%@@@@@*#%#.===.=+*=:====+===:         @@@@@@@%%%%#:+++++****
+++==-:-       -#@@%%%@@@@*#%#  =========--=====-         @@@%%%%%%%%%%+++******
+++=-:       ..-%@@@@%@@@@@@@@. +==++===--==++=-:         *#+%%%%%%%%%##*******+
++=-:. =       =%%@@@%%@@%##%*##+==-:::--=====--:        ####*#%%%%##**#******++
==-.  ---    -=%@@@@@%%@@%#++-+=+======--==:==---:       *=+**#%##*#####**+++++=
-:..  :: .  =#%-=-==---===-=:----=======--=:=++-.       .%.+%%#**##****++++==--:
-:    :. . .#----=-------==:-=+------===----=++=+**=    +%:-#*###***+++=-::.:...
-:     :.:::-----:::::---:::-----------::::-=---=++++*+*.:=*####*++++=-::.      
-=.    ..::-+**=-:::.::::::--------------:------=====:  .+**##**++==-:.         
--=.   :- =+++*+==:..::::::-:----------:--:::---==.     .=****+++==:.           

***********######*#****************+++++++++*#%%%%%%%%%#**#****+==:.... .:-==++*
+++++***********#######**************++++++=======+*##+=-=++*+=-::       .:--:-=
:-------==+++++**@@@********************+++++++++===+===-:-=---:-:.   ::=**+*.:-
-:::------:::::::-====+++++++************+++++%@@==:..::-.:::-==-=--=+**+=-:::::
----==---:::..::::::::::::::----------:::::::::---.....  .====+++**+++*======-=+
-------=--:.:.:::....::-:::::::::::::::.  . .:..... . .=+#+++*###%**+*==-.:----=
=---::.::-.  .:. .:.:+:-:::-:::::----:::     : ... .--*#**####%%%##*+*+=-::-====
.         :..:::.-:-=.:=+----:-------:-:    :   .. =**####**#######*+++++=--:...
  .::::::-==--::----..  :-:---------=:-     .     *+:*+##-:::+**+=-:.::==+=-:...
:-====++******++*****=:  .:-:--------.:.    :   :*:-#---:.:: *#+ ---===++++-:...
+++****##############*+-   ----------.: .   :   .*-#%%%%%##+%@@#=+-::. .-++:*-  
++**############*++==***-   :--------::     .   =#####***++@@@%%=*####***#*=:-.:
+:::....:=+++=-::-++*++**..=::------::::::::::::#*****+++*++****#*+*#####***=.#:
+*****+-----=-----++=-+**:--=-::::-::.          #*++=====--=+==-====+*###%**++=.
*=::..::-=*%%#+==-:-*%###-==::::::::..     .    =**+=--+##*=--=======+******-+. 
#%%%######%%@%#*##%%%%##***::::::::: .     .  +#***+=--:::-=====+++==++******-:.
######*=###%%###*-+*****+=:::::::::.            =+++++.  :+#**++=.-==++***+*--==
+++++=---::==-.:---=+=+++:..:----::.........:@@#*++**##+-:-:::.   -++++***+=-..-
=====-:=*+=---==+=--=++++:   .....:::.....:@@@@@#++*#*##%@##*++=+++**++*+====---
-====:-:-++***+=: :-==++-++   .......:::::@@@@##%%+*##*++*******++*+++++#----::.
.:====--.  :::. .====++*+-=+     ..:   ==@@@%%@@%%*+#%%###*+==++**+++++##%*-::::
   -=====+#+++**++==+++*+-==++    .   .*%@@@#@%@%#++=*##########*+++++ -*#%%-. .
    --=+++====--=++++==+===-=== .#@@@@@@@@@%@@#%%#=++==+******+===++==:-::*%%%#+
     .-=+****+***++---+=.--=#@@@@@@@@@@%#%@%@@#%%#-============+++++=:=++: +#%@+
      .. :======-:....:...*%#@@@@@@@@@%#%%%@@@%#%#.--===++++++++++==- =**+.:#%%@

Usage

As mentioned, GG is meant to be utilized via the terminal.

Here is the usage information as given by the command gg help:

gg - v0.1 - [g]leeble[g]lob command line interface. Check out https://gleebleglob.club for service information. GENERAL USAGE:

        gg [command] [...arguments]
    NOTE: excess arguments will be ignored.

COMMANDS:

        gg help
        gg register [username]
        gg login [username]
        gg logout
        gg status
        gg upload [file path] [password]
        gg stream [file token] [password]

It should be noted that GG keeps track of your current session (previously uploaded and streamed videos) in ~/.ggsession and ~/.gg{user} files.

To check and see if you are currently logged in, simply run gg status.

It should be noted that [file path] must refer to a video file, and that [file token] will be provided upon successful uploading of a given file.

You can share the file token given by the upload command with your friends on different machines, as GG interacts with a GG API to store and stream video data.

Remember, like YouTube, but on the CLI! Installation

To install GG, you'll need to compile the C++ source code for the client on your machine.

The GG API is currently deployed to api.gleebleglob.club, and the client will automatically connect to this API.

Compiling and using the client has been thoroughly tested on MacOS, and minorly tested for Linux (don't trust us on that though - venture at your own risk).

You will need to install the following dependencies, either with homebrew, apt, or another package manager:

CMake (the C/C++ compilation toolset)
FFmpeg (the command-line utility)
SDL2 (the cross-platform C/C++ windowing library)

Networking is accomplished with BSD Sockets, which is provided by any POSIX-compliant OS (such as MacOS and Linux), so no additional dependencies need be installed for that.

With these dependencies installed properly, clone the source code from GG's GitHub repo, and run the following commands in order:

    cd GG
    cd client
    cmake -S . -B build
    ./build.sh
    sudo cp build/gg /usr/local/bin/gg

After which, the gg command utility will be available from your terminal.

Read the Usage section for more information on how to use GG as a CLI. Try Streaming These!

(Run gg stream v_0123456789... when installed.)

    v_11106639798741291128
    v_14176502009951724662

Or upload your own with gg upload [file path]!

As far as problems we ran into... there were none, PROGRAMMING IS EASY!!! If you find it hard then get gud!!!! ;P

Built With

  • bsdsockets
  • c++20
  • cmake
  • ffmpeg
  • sdl2
Share this project:

Updates