Character Separated Value Organizer Language, or CSVOL (\kasväl\), is a language that is domain specific to managing, querying, and visualizing online/offline CSV datasets. CSVOL also promotes cloud file sharing by simplifying small-scale file server creation.
CSVOL is influenced by many technologies that help students, businesses, and hobbyists manage, query, and visualize data. Language examples include those domain specific to data processing like Visual Basic, SQL, and Unix utilities such as AWK, SED, and GREP. CSVOL is also influenced by spreadsheet software like Microsoft Excel and Google Sheets. CSVOL is aims to provide a server-side solution that places all of the great features seen in the previously stated solutions under one umbrella.
Alongside CSVOL, we are submitting CSVOL SOL, or CSVOL Standard Online Library. SOL was developed concurrently with CSVOL. SOL, rather than a language, is the infrastructure put in place for CSVOL that makes adding new features to the language easier. SOL ensures the continued improvement and longevity of CSVOL.
SOL contains CSVOL commands that are not present in the base interpreter, such as a command that sets custom delimiters. SOL allows any developer to import additional CSVOL commands and modules, all without touching original interpreter files. Currently, two commands are provided in SOL, with plans to continue adding more to SOL after the jam.
In addition, developers can sync other websites and CSVOL programmers' datasets with the interpreter. As of now, SOL contains hosts no CSV files to sync, but the Tutorial section mentions how you can sync CSV files from any website. As an example, the tutorial syncs a file from this website: https://people.sc.fsu.edu/~jburkardt/data/csv/
All development occurred on Repl.it, with occasional testing on desktop environments. Both CSVOL and SOL are synced with GitHub.
- Interpreter [0.10.0]: https://repl.it/@wichitacpu/CSVOL#main.csvol
- SOL: https://repl.it/@wichitacpu/csvol-docs
^ Host website: https://csvol-docs.wichitacpu.repl.co/sol.html
- Example CSVOL code:
^ Explained in the Tutorial section: https://repl.it/@wichitacpu/CSVOL-Example-2#main.csvol
^ Fibonacci sequence to Nth term with CSVOL: https://repl.it/@wichitacpu/CSVOL-Example#main.csvol
- Interpreter [0.9.4]: https://github.com/AbirHaque/CSVOL
- SOL [Mirror]: https://github.com/AbirHaque/csvol-docs
^ Host website [Mirror]: https://abirhaque.github.io/csvol-docs/sol.html
CSVOL 0.10.0, which contains web server creation features, is up and ready on Repl.it. However, 0.10.0 is not on Github. Instead, you can install 0.9.4, which contains all other features.
If you want to install and run CSVOL 0.9.4 on your own computer, follow the instructions here: https://github.com/AbirHaque/CSVOL/releases/tag/v0.9.4.
The current members of the Wichita Computer Programmers' Union @wichitacpu are all students of Wichita High School East, and CSVOL is the group's first project, with SOL being its second. Members that worked on CSVOL and SOL's development were:
- CSVOL is an interpreted language that is object-based and event-driven.
- The interpreter and SOL are in Java.
- The web server is hosted with Ruby.
- The SOL host website was built with HTML.
- Besides the CSVOL source files, Ruby and Java 8+ compilers are needed to run CSVOL on your computer, so CSVOL can run offline on multiple platforms, including Windows, Linux, and MacOS.
- We believe we successfully crafted CSVOL to be Turing complete.
- SOL or not SOL, all commands, modules, and datasets imported/synced are always downloaded through HTTPS.
Asides from baseline features like creating/editing/printing file contents, looping, conditional statements, and math operators, the current features of CSVOL include:
- Web server creation for CSVOL CSV datasets.
^ Great for serving as a small-scale business file server.
^ Promotes collaboration and cloud file sharing between other CSVOL developers.
- Importable libraries
^ This helps promotes future improvements to CSVOL, while maintaining the same interpreter and syntax structure of CSVOL. These additions can be from SOL or custom made. Instructions to make your own importable command will soon be posted here, hopefully before the end of the jam: https://csvol-docs.wichitacpu.repl.co/sol.html
^ If you would like to contribute your own CSVOL command, module, or file to SOL, submit a pull request here: https://github.com/AbirHaque/csvol-docs/pulls
- Online file downloading/syncing
^ You can download/sync CSV files from any website/CSVOL file server, not only from SOL.
^ Great for managing datasets and file servers across multiple systems.
- Additional REPL environment
^ Promotes quick, one-time, server-side programming.
- GUI spreadsheet
^ With SOL, server-owners can view/edit spreadsheet versions of their CSV datasets.
- CSVOL script modularization
^ Encourages organized and reusable CSVOL code.
- File name and line number error reporting
^ Promotes rapid fixes.
General meeting notes documenting all of Wichita CPU's operations can be found on our group's public Google Doc: https://docs.google.com/document/d/1penokzeQKJ7PXM5JvUvn8pT_uso4QuSFwjQhdeqkrpU/
We plan to implement the following features:
- Set certain datasets as private during file server creation
- Add cosmetic features to the index page of CSVOL cloud servers
- More search functions
- Advanced math functions, mainly trigonometric (sine, cosine, tangent, etc)
- Make GUI UX better (scroll bars, drag/drop, keyboard/mouse commands, etc)
- Build up SOL infrastructure by adding commands like the previously stated ones
- Fix looping issues in REPL environment
- Improve documentation page
More additions will be decided upon and listed during general meetings.
Here is a one-page tutorial of basic CSVOL programming: https://abirhaque.github.io/csvol-docs/docs/tutorial.html. The page walks through:
- Writing scripts
- Entering REPL commands
- Publishing a file server
- Importing commands from SOL
- Importing datasets from websites
- A few quirks of CSVOL, like optional syntax and error reporting
All of the Tutorial section code works in this repl: https://repl.it/@wichitacpu/CSVOL-Example-2#main.csvol.
The following repl has example CSVOL code that uses GUIs, calculates a user inputted Nth Fibonacci term, and implements recursive searching: https://repl.it/@wichitacpu/CSVOL-Example#main.csvol.
To write your own CSVOL program or try out the REPL environment, run this repl: https://repl.it/@wichitacpu/CSVOL#main.csvol. Write driver code in main.csvol, then create additional module files that end in .csvol. The previous two example links are forks of this repl.
On behalf of the Wichita Computer Programmers' Union, I would like to thank Repl.it and the jam judges for presenting us with such a fun challenge!
• If GUIs do not work in the window below, please click on one of the example links above. You can also install and run CSVOL 0.9.4 on your own computer by following the instructions here: https://github.com/AbirHaque/CSVOL/releases/tag/v0.9.4.
• You must fork one of the above repls to have a working file server (Repl.it websites are dependent on username).