There are *55* varied apps in this demonstration, in only *359* lines of readable, non-minified Rebol code: http://re-bol.com/shorter_examples.r The Rebol2 interpreter needed to run these apps on any common OS is about 600 *KILOBYTES*, with no external dependencies - all libraries included. Sound impossible? Give it a try. It literally takes 1 second to download. Get Rebol from http://rebol.com/download-view.html , click the console icon and type "do http://re-bol.com/shorter_examples.r" to run all 55 examples. Video run-thru of the apps: https://youtu.be/D50XULVZaYY They include: Games and puzzles 2D and 3D graphics Photo and image manipulation Sound and music Parsing, validation and manipulation of structured and unstructured text A wide variety of CRUD, database, and business apps User interfaces of all sorts, a full featured data grid example, etc. Network (TCP and UDP) text and binary data transfer Stand alone custom web server implementation CGI scripting and web site building/management tools for 3rd party servers Configuration and use of Email, FTP, HTTP, and other standard protocols Manipulation of HTML, CSV, and other standard data and code formats DLL/dynamic library examples Help/documentation Encryption Math I/O etc... 2 of these examples were written to demonstrate language dialects ('r3D' and 'q-plot'). Each of those tiny libraries is written in 100% pure Rebol code (i.e., no OpenGL, etc. required). All the other examples require absolutely no 3rd party modules or tools of any sort. UI, network, graphics, sound, math, compression, email, CGI, security, DB, protocols, parse, help, etc. are all integrated in the 1/2 meg exe (absolutely no supporting software, NO BROWSER, *nothing* else required). Each example here averages just *6.5* lines of code, includes a user interface in the code, and represents the full scope of tooling and work needed to implement the app (no IDE or GUI builder is needed to create any of these examples - you can even use the text editor built into Rebol to edit any of the code). This written description of features in each app actually requires many more lines of text than there are total lines of code in all the apps, and just about any tiny text editor used to read this article is likely many times larger then the entire Rebol development system/runtime! No language or development system cuts bloats or improves productivity as dramatically as Rebol. Doubt that statement? Then try to recreate these diverse examples, more productively (i.e., with less total work, time, effort, configuration, setup, layout, etc.) using ANY other tool. You'll find that it's not possible: Tile Game (6 lines of code) The interface displays 1 empty square space and 15 square boxes. Each box displays a unique number on its face. When the user clicks a box, it slides into the adjacent empty space (boxes are only allowed to move if they are next to the empty space). The boxes are arranged in a different random layout, and are displayed in different random colors every time the game is played. The point of the game play, for the user, is to rearrange the boxes in numerical order (so that the rows display the numbers 1,2,3,4; 5,6,7,8; 9,10,11,12; 13,14,15). Multiple Camera Video Feed Viewer (4 lines) The interface consists of an image widget and a list selector widget, which displays the URLs of 27 active cameras. When the user selects any camera URL, a live motion video feed from that camera is displayed in the image widget. Error handling ensures that an unavailable Internet connection or other network problem is taken care of gracefully with a message notifying the user. Bar Chart Generator (2 lines) A pop-up text requestor displays a list of month names and related numerical values. The user can edit (add, delete, change, etc.) these values. When the user submits the values, they are plotted on a graphic bar chart. Each bar in the chart is labeled by one of the user-entered month names, and the size of the bar graphic represents the numerical value related to that month. Error handling ensures that the app doesn't break if the user enters bad data, cancels the entry process, etc. Image Effect Demo (4 lines) An image is downloaded from a URL and displayed in the interface. A list selector widget allows the user to select from a variety of possible effects which can be applied to the image. When an effect is chosen by the user, that effect is applied to the image and displayed in the interface (in this example, the available effects are "Invert" "Grayscale" "Emboss" "Blur" "Flip 1x1" and "None", but many more are included in Rebol). To-Do List (5-6 lines) The interface includes a text entry field that allows the user to enter a line of text representing a task to be completed. All of these 'to-do' line items are displayed in a list selector, as they're entered. The user can click on any line item to delete that particular task - a pop-up requestor confirms that the line should actually be deleted. The user can also move the position of any selected item toward the top of the list, one line at a time, by clicking on the 'up' button in the interface. The user can also save the current list to a file, and load a previously saved list by clicking 'save' and 'load' buttons in the interface. Error handling includes not only the delete confirmation, but also any attempt to move selected items beyond the top of the list, and any attempt to load a data file which hasn't yet been created (or which is in an inappropriate format, corrupted, etc.). Madlib (3 lines of code, 1 line of default madlib text) The interface displays a default example madlib text, which can be freely edited by the user. The edited text may include any number of lines, any number of madlib word choices, etc. (in this example, the madlib choice descriptions are displayed within angle brackets in the editable text). When the user submits the text, the app parses out the madlib choice entries, requests each of the madlib words from the user, and then displays the final created madlib, with the bracketed choices replaced by the words chosen by the user. Pig Latin (3 lines) The interface allows the user to enter a line of text, which is then parsed and converted according to the rules of Pig Latin. In this example, the input and output are displayed in a console interface. GUI Calculator (6-7 lines) The user interface provides buttons numbered 0-9, a decimal point, and buttons representing addition, subtraction, multiplication, division, and equals operations. When the user clicks any button, a text field widget is updated to display the current computation (just as in a typical physical calculator), and when the equal sign is pressed, the displayed computation is evaluated. Error handling is provided so that divide-by-zero and other inappropriate operations don't break the app. Calendar/Scheduler (5-6 lines) The user is able to select any date using a calendar requestor widget. Events for the selected day are automatically saved to a file, and can be easily retrieved, altered, added to, deleted, etc., by simply reselecting and editing the contents of any chosen day. Paypal Report (3 lines) The intent of this report is to go through each line in a Paypal account file and display the money value of any transaction which occurred between midnight and noon on any day. A Paypal account transaction CSV file is downloaded from a URL. The first line of that file consists of descriptive headers, so this report begins processing line 2. The data values in each line are separated at the comma delimiters. The second item on each line is converted to a time value. If that time value is greater than midnight, or less than noon, then the eighth value in the line (the money value for that transaction), is printed. Local and Remote IP Addresses (2 lines) The local (LAN) IP address of the user's machine is obtained from local DNS information, and the external address is retrieved from a remote server. In this case, the WAN address is parsed from a small Rebol CGI script running on a private web server, but that information could be just as easily parsed from the results of any public 'what-is-my-IP' type server. FTP Site Editor (4-5 lines) This app enables the user to visually list, select, and edit any file on any FTP server. The interface allows the user to enter Username and Password credentials to any FTP server URL, and select a folder. Every file in the selected folder is displayed in a list selector. When the user selects a file, that file opens in a text editor, where it can be edited by the user, and then saved back to the server. Error handling is provided to notify the user of any connection errors. Wave File Sound Player (3-4 lines) A folder selector allows the user to click on any folder available on the local machine. Only the .wav files found in that folder are displayed in a list selector, and the selected WAV sound is played when the user clicks a file name. Error handling is provided in case a chosen .wav file is not the proper format, is corrupt, etc. Freehand Draw (7-8 lines) A blank canvas is provided in the interface, and the user can sketch freehand drawings with the mouse (touch screen, pointing device, etc.). The user can save any drawing to a file name of their choice, by clicking the 'Save' button. The user can also clear the screen and begin a new drawing by clicking the 'Clear' button. 3D Gradient Cube (5-6 lines) This app is a demonstration of Rebol's 'Draw' dialect. The interface displays a box, on which a 3D cube is drawn, using 3 polygons of different colors. A gradient color effect is applied to the entire drawing. Animated 3D Image Transform (4-5 lines) This is another Draw dialect demo. The interface consists of a black box, upon which the Rebol logo is drawn. A loop is repeated 4 times to produce an animated transformation in which the logo appears to twist and spin with a 3D effect. TCP Text Messenger (9-10 lines) The interface allows the user to run this app as either a server or a client. The local IP address is displayed, and a user running the app in client mode can edit the address of the server. A text entry field allows the user to type messages to be sent between client and server. Received messages are displayed in a scrolling text area (users of both the client and server can both send and receive messages). Two instances of the app are opened in separate processes, to demo the app communicating on a single localhost machine. HTML Form Server/Processor (8-9 lines) A TCP server is started on port 80, and an HTML form is served to any browser which connects (the server can handle as many local or remote connections as your machine's hardware will allow). To demonstrate the server, the default browser is opened on the host machine, and the served HTML form is displayed. All data entered from connected browsers is displayed in the server console, and each entry is stored to a log file. The server can be closed by typing "quit" into the HTML form. File Encrypt/Decrypt Utility (6-7 lines) The interface allows the user to select a file from any drive on the local machine. The user then types a password and clicks the 'encrypt' button, and the file is saved in encrypted format to any file name chosen by the user. The user can then select and decrypt any previously encrypted file by typing the appropriate password and clicking the 'decrypt' button. Compress and Embed a Binary File in Code (3 lines) A file requestor dialogue allows the user to chose any local file to be embedded in code (a file of any sort, even executable, video, etc., could by chosen to be embedded in code, but for the purposes of this example, the user is expected to chose an image type (jpg, png, gif, png)). The file is compressed and converted into a text format which, for example, could be copied and pasted into a script, sent in an email, posted on a web page, etc. The code containing the embedded file is displayed in a text editor, for the user to examine, edit, save to a file, copy to the clipboard, etc. The embedded version of the file is then decompressed, and the image contained in the file is displayed in a GUI window. Chord (Sound Accompaniment) Looper (11-12 lines) The interface allows user to type in names of musical chords, enter a speed setting, and click a 'play' button to continually play the sound of those chords in a loop. The user can click a 'stop' button to stop the sound from playing. Songs made up of any number of entered chord names can be saved and loaded. The sounds are downloaded in a single binary file in which the WAV data of every chord sound is encoded (using the standard Rebol format to encode binary files of any type, demonstrated in the previous example). Blogger (6-7 lines) The interface allows the user to enter username, password, URL, and folder information for an HTML file which will display blog entries created by the user. The user can type a new entry and click the 'publish' button, and that entry will be automatically added to the user's blog page. The blog page is then opened in the user's browser to allow the changes to be viewed. The user can edit the contents of the blog at any time, by clicking the 'edit' link in the interface. Error handling allows the app to respond gracefully if the server can't be connected or if the user chooses to cancel the connection. Email Account Setup/Reader/Sender (9 lines) The code of this app demonstrates how to configure Rebol's connection to an email server (username, password, SMTP and POP hosts, email address, etc.). The interface allows the user to enter an email address and a message, and the message can be sent by clicking the 'send' button. The user can also read each of the emails in an account inbox by clicking the 'read' button. By default, only the first 5000 characters of each email are displayed. Error messages are displayed to gracefully handle any trouble encountered when sending or reading emails. Generic CRUD App - Card File (7 lines) The interface allows the user to enter two fields and one multi-line area of text. The user can click buttons to save, edit, delete, create new records, edit the raw database info directly, etc. Error handling ensures that the app won't crash if the user cancels any operation, attempts to open an empty file, etc. All data is stored to a single file which is generated automatically, and which can be moved to any machine on which Rebol runs (no third party database system or any other tools are required). Grid w/ edit, add, delete, find, sort, sum, save/load, etc. (20 lines) A block of random data is generated, with 999 rows, each consisting of 3 columns: a unique incremented numeric ID, a random date/time value, a randomly ordered string of the characters "abc". The interface displays the data block in a grid widget. The user can sort the columns visually by clicking column headers. The numeric column values are sorted ordinally, the date values are sorted chronologically, and the text values are sorted alphabetically. The user can edit any of the text column values, but the other columns are left uneditable, and the display of each column is styled differently to clarify which are editable. A slider widget is provided to allow the user to scroll the grid up or down, and a key scroll option is also available to provide finer grained control (the down arrow key scrolls the display 10 rows down). Although this example only displays 999 lines, the display performance is just as fast if tens of millions of rows are displayed (obviously, sorts, searches and other data processing features are slower with enormous data sets, but the visual scrolling performance is just as quick, regardless of the data set size). The user can add new randomly generated rows by clicking the 'add' button (adding rows based on other criteria is just as easy). The user can also delete any desired row. A 'find' button allows the user to enter a search term, view the rows in which the term is found, and then jump to that row in the display. 'Save' and 'load' buttons are provided to allow the user to store and retrieve the entire data block to/from a file. 'Sum', 'Average', and 'Max' buttons are provided to allow the user to perform those computations on the first column of numerical values (of course, any other imaginable computation could be performed upon any set columns, rows, or definable subset of the data block). Error handling is provided where needed to ensure the user won't break the app unintentionally by canceling, entering bad values, or otherwise misusing the features of the grid. It's important to note that the code needed to display the grid data consists of 3 lines. All of the features of this app are created using basic Rebol language series functions which can be composed and manipulated as needed (i.e., this app is created using plain native Rebol code, not some monolithic grid library with an esoteric API). The grid layout itself can also be used to display any other type of widget which can be displayed in Rebol's default VID (GUI) dialect: images, animations, buttons, etc. VOIP Network Intercom (19 lines) Two separate apps are launched as separate processes: 1 sender and 1 receiver. The receiver app opens a TCP network port (with error handling), and opens a sound port. This server then waits for binary Wave (sound) files to be transferred from the sender app. Each sound is played on the receiver machine, as they are received. The sender app opens a TCP connection to the server machine and sends recorded wave files over the network. The sender app is intended to be run on an MS Windows machine, and demonstrates how to load and use the winmm.dll file found on Windows systems. That DLL is used to record streams of sound from the sender microphone. The recorded sound streams are compressed and sent over the network. A squelch feature is included so that only sounds which are louder than a set limit are sent. The code syntax used to access DLL files in this example works across platforms (i.e., this code demonstrates the same basic method and syntax used to access dynamic libraries on Linux, Mac, and other systems too). Catch Game (11 lines) The user controls a paddle image which moves back and forth across the bottom of the screen. The direction of the paddle movement is switched by pressing the space bar. The paddle stops moving whenever it touches either the left or right hand edge of the screen - movement continues again whenever the user presses the space bar. An image (in this case the Rebol logo) continually falls from random positions along the top of the game screen. The user must time the movement of the paddle to catch the falling logos. The point of the game is to continue catching falling logos for as long as possible. The speed of the falling logos progressively increases as the game goes on. A timer in the top left corner of the screen keeps track of how long the game runs. The game is over when more logos have been missed than caught. The final score is the amount of time for which game play was sustained. When the game is over, a dialogue requesting the user's name is displayed. A high score board, with all the names and scores, sorted from highest to lowest, is displayed to the user. Note that this game is created without the use of any special game development library. It's made entirely using the standard GUI dialect which ships with Rebol (11 lines of code total). Snake Game (11 lines) The game interface consists of a 20x20 grid of snow colored squares. The player's snake is initially made up of 1 red square, which moves continually around the screen. The direction of the snake's movement can be changed to up, left, down, or right using the WASD keys on the keyboard. The point of the game is to navigate the snake to 'eat' blue 'food' squares which appear at random locations on the grid. Every time the head of the snake eats (collides with) a food square, the length of the snake's tail grows by 1 segment, and the snake moves a bit faster. Each segment in the snake's tail follows the path of the snake's head. If the snake head collides with any outer wall of the playing field or with any segment of the snake's body, then the game is over. The final score is determined by counting the total number of segments in the snake's body. Guitar Chord/Scale Diagram Maker (13 lines) The purpose of this app is to help guitarists, bassists, ukulelists and players of other stringed/fretted instruments quickly draw and save images of labeled chord, scale, and arpeggio diagrams. A text requestor dialogue allows the user to set the number of frets in each diagram (default number of frets is 5). The interface consists of 6 vertical 'strings' segmented into the chosen number of frets. The user can click any string/fret segment, and a finger marker is placed at that location. Clicking a chosen finger marker again toggles that location back to an empty segment. Right-clicking a segment allows the user to choose any character which will be placed at that location. Clicking the header text allows the user to type a name or descriptive title for the diagram (i.e., a chord, scale, or arpeggio label, etc.). Right-clicking the header allows the user to save the created image to any file name of their choice (default file name is the text entered into the header line). Cash Register (13 lines) The user interface consists of a text area, 2 buttons, and 5 text entry fields. 2 of those fields above the text entry area are labeled 'Item', and 'Price'. In those fields, the user continuously enters descriptions and prices of items which customers have brought to a retail checkout. Error handling ensures that the user cannot enter non-decimal numbers into the price field. Each item entry is added to a scrolling list display in the large text area, and the subtotal, tax, and total sale values are calculated and displayed in the text fields labeled 'Items', 'Tax', and 'Total', below the text area. When all the retail items have been entered into the register, the user clicks the 'Save' button. This saves all the data in the sale (item descriptions/prices, and current date-time) to a record in a file, using a native format which can be easily parsed and computed for later reporting. A receipt image (neatly cropped screen shot) is displayed in the browser, where it can be printed for the customer. The fields of the cash register screen are then automatically cleared so that a new sale can be entered. The user can click the 'Report' button to calculate and display the total dollar amount of items sold on the current day, as well as a total of cash collected (including sales tax) and a count of the total number of items sold. A report of any complexity, using any criteria (dates and times, item prices and descriptions, as well as any other info added to the register layout (cashier name, for example)) could be easily created using this code, simply by specifying the desired conditional operations to be performed. No SQL or RDBMS required. See http://freeconsignmentsoftware.com for a popular commercial POS consignment software system written in Rebol, by the author of these examples. Form Entry Validation (8 lines) This app demonstrates how to validate the syntax of data entered into a user interface form. The user is notified whenever a value has been submitted with improper formatting during the process of data entry. In this example, 2 types of character sets are defined. 'nums' are defined as the numbers 0-9, and 'alfs' are defined as the characters 'a'-'z' lowercase and 'A'-'Z' uppercase. 4 fields are presented in the user interface. The code contains a user-defined 'validate' function, whose purpose is to scan each of these fields according to separate data format rules. Data entered into the first field must consist of any 8 numbers. Data entered into the second field must consist of any 4 numbers. The third field is intended to contain a phone number, and must consist of an opening parenthesis, 3 numbers, a closing parenthesis (the area code), 3 numbers, a dash, and then 4 final numbers. The last field is intended to contain an email address, and must consist of any number of alphabetic characters, then the '@' symbol, then any number of alphabetic characters again, then a dot, and then 3 alphabetic characters. When the user starts the app, the first field is focused, and an alert message pops up any time a data entry error is encountered. Help (4 lines) This app displays all of Rebol's built-in functions (a total of 556) in a list selector. When the user clicks any function, the source code (if available) and help information for the selected function is displayed. This help requires no externally loaded information. All the help is drawn entirely from documentation contained in the tiny Rebol executable. Year Calendar (9 lines) The user is asked to enter a year (default is the current year). A properly formatted calendar is printed for all 12 months of the chosen year. A header for each month is printed, followed by column headers displaying labels for the days Monday-Sunday, then a layout showing each numbered day of each month, laid out with the first day starting in the correct day column, wrapping each line at Sunday, and ending with the proper last day of the month. Leap years are handled correctly. UDP Chat (11 lines) A pop-up dialogue requests the user's name. The user can then send and receive messages with any other user(s) on the local network. Messages are displayed in a scrolling text box. The point of this example is not just to demonstrate another chat app, but to demonstrate use of the UDP network protocol. UDP does not require any connection to a centralized server. Instead, messages are simply broadcast over the network, and any other listeners can receive those broadcast messages. This connectionless protocol is especially useful in game designs which require the fastest possible network communications, because UDP requires none of the time consuming error checking enforced by TCP. UDP is also useful in creating certain types of network utilities (which for example, could be used to broadcast the IP address of a TCP server to clients, or any other application in which machines need to connect without previously having access to a known server address). 3D Graphics - r3D library example (17 lines) This interface consists of a black box which displays a drawn 3D cube, and 6 slider widgets which allow the user to control all 3 axes of the cube's rotation, along with 3 axes of camera angle from which the cube can be viewed. This example makes use of the r3D library by Andrew Hoadley, which is downloaded from http://re-bol.com/r3d.r in the code. The r3d library is 105 lines of compressed pure Rebol Draw dialect code. Draw dialect is built into all versions of Rebol/View by default, runs the same on every operating system, and requires absolutely no 3rd party dependencies of any sort (no OpenGL, etc.). This app displays the draw dialect commands created by the r3D dialect, in real time, as the user manipulates the scene (this feature can be shut off by simply commenting out the 'probe RenderTriangles' code at the end of the 'update' function). CGI Photo Album (7 lines) This example is a web app, meant to run on an Apache server. To run it, just upload the tiny Rebol interpreter to your server, set permissions to 755, and edit the location of the Rebol interpreter in the script. This app is commented out in the running example code because it needs to be installed on a server, but you can see it run at http://re-bol.com/photos.cgi (these examples automatically open the user's browser to that page). The script reads a listing of all the files in the folder where it is located on the server, removes any file from the folder list which is not an image, and then displays each of those images centered in the user's browser, along with a count of the total number of images displayed. CGI Group Chat (6 lines of Rebol code + 6 lines of HTML form code) This is another web app, which can be found running at http://re-bol.com/chat.cgi (the user's browser is opened to that page). This app displays an HTML form into which users can type their name and a message. All messages from all users are displayed, along with their name and a date-time stamp. The basic structure of this app can be used to implement forums and other multi-user, multi-topic web apps. See http://rebolforum.com for such a web app, which has received 10s-100s of thousands of monthly user views since 2010. Desktop Group Chat (5 lines) This console app displays the messages entered using the web chat above, and allows the users to enter messages into that chat, and visa-versa. The two apps are totally interoperable. Any messages typed into the web app appear in the desktop app, and any messages typed into the desktop app appear in the web app. Pie Chart - q-plot library demo (3 lines) This app is the only other 3rd party library demo in all the examples. It demonstrates just a few features of the q-plot language dialect. Language dialects are one of the main reasons for Rebol's existence. Rebol was designed from the ground up to create dialects (small purpose- built languages) such as this. Dialects are one of the primary reasons why Rebol code is always so ridiculously short and simple, and why the Rebol interpreter itself is so dramatically tiny compared to other language tools. Rebol attacks the problems of complexity and bloat in many ways (see http://redprogramming.com/Why%20Rebol%20and%20Red.html for an explanation), but the idea of dialecting is one of the most powerful, and dialects which provide concise solutions to nearly any sort of problem in any domain of computing, can be created easily in pure Rebol code. This example simply demonstrates a pie chart on a 400x400 pixel screen, which plots the numbers [10 3 6 1 8], labels them [A B C D E], with sections [3 5] exploded, titled "Exploded Sections C and E", using the style 'vh2'. The 2 lines of dialect code in this example could not possibly be more concisely structured to display the desired chart output. The 1st line of code downloads the q-plot dialect library to a local cache, so that it doesn't need to be re-downloaded every time it's used. Parse URLs (1-6 lines) This is an example of Rebol's built in 'parse' dialect. Parse allows developers to accomplish the same sort of tasks for which regular expressions are usually used (pattern matching, searching, splitting, validation, etc. of structured and unstructured text/data), but using a language which is much simpler to write and far and away easier to read. Parse is one of Rebol's most fascinating features, and is a single reason alone why some developers choose to use Rebol. Parse is extremely powerful, performs very fast, and is unique among options for accomplishing this kind of work. No other language has this feature, and once you compare it to regular expressions (which are used in nearly every other modern language), it's very hard to go back. Parse is one of the main features in Rebol which makes it well suited for building language dialects. This little example simply searches for URLs in a text string and wraps those URLs in HTML link tags. Multi-User File Uploader (9 lines) The username and password credentials for an FTP server are hard-coded into this app. The user can edit those credentials, along with a starting folder, to which any number of selected local files are uploaded. An HTML page is then created (or appended to), on which links to the uploaded files are written. The user can edit the HTML page as desired (the code is displayed in a text editor), and then the final page is displayed in the user's browser. The purpose of this app is to replace 3rd party file sharing services such as Dropbox. You can instantly create any number of new pages for any user, or for any topic, etc., or upload and add files to any existing pages. All that's needed to create unlimited private pages for any user or topic, is access to a single FTP folder. Recursive File Search (9 lines) A text requestor dialogue asks the user to enter some text to find, and a folder to start in. The app then searches for any file in which the text is found, in that folder, and in any subfolder(s), subfolders of those subfolders, etc. The file names of any file in which the search term is found, are displayed as the search progresses, then that list of file names is displayed in a text editor, so that the list can be edited, saved to any file name the user chooses, etc. Image Slide Show (7 lines) A directory requestor dialogue allows the user to select any local folder. The app then removes any file names which are not images, and consecutively displays each individual image file contained in the selected folder. The user clicks on each image to progress to the next file, or closes the window to end the slide show (instructions about clicking each image to continue, are displayed on the user interface). Coin Flip (4 lines) Images of a quarter's head and tail sides are downloaded from a URL. The user clicks a user interface button labeled 'flip', and the image is randomly flipped between heads and tails. Math Quiz (5-6 lines) A random addition problem is generated and displayed to the user. In this case, the first random addend is generated between the numbers 1-10 and the second addend is generated between 1-20. The user types the answer to the addition problem, and is greeted with a 'yes' pop-up message if the answer is correct, or a 'no' message if the answer is incorrect. The process is repeated until the user closes the window. Days Between Dates Calculator (4 lines) The interface consists of 'start' and 'end' buttons and a text field labeled 'Days Between'. When the user clicks on the 'start' button, a date requestor dialogue allows for the choice of a starting date. Likewise, the end date button allows the user to select an ending date. When both dates have been selected, the number of days between those dates is calculated and displayed in the text field below. Multiple Pane GUI Demo (6 lines) The interface initially displays 2 text entry fields and 1 multi-line text entry area, along with 2 buttons. The user can click one of the buttons to switch the interface to display a text-list selector. The user can click the other button to switch the interface back to displaying the text entry field panel. Data entered into the text field panel and lines selected in the list panel are persisted as the panels are swapped on and off screen. 5 One-Line Apps (5 lines) The next five examples can each be displayed 1 line of code. The code of these 5 apps has been broken apart at the 69th character or less, so that they can be easily printed, sent in the text of an email, etc. The five apps demonstrated here are the classic FizzBuzz, a restaurant tip calculator, 99 bottles of beer, the game Tric-Trac, and a web site favorites bookmark loader. There are many more one-liner examples at http://re-bol.com/short_rebol_examples.r and http://www.rebol.com/oneliners.html Echo Clipboard to File (4 lines) This app watches for any text be copied to the system clipboard, then echos it in the console, and appends the data to a running log file. This app also demonstrates how Rebol can asynchronously watch for keystrokes in console apps, separately from running a continuous forever loop. In this case, when the user presses the ENTER key, the app is ended. Live Code Editor (3 lines) This example provides the user with a text entry area containing some default GUI code. The app created by this code is displayed in a box widget in the layout. The user can edit the default code, while the created app is running, and the created app will change in real time. State in the created app is maintained (i.e., the created app doesn't just stop and start with each new code edit - it actually changes while running. Any variables, environment conditions, etc. are maintained in the live running app). This app also demonstrates how Rebol can watch for events asynchronously from the main event loop of a GUI app. In this case, if the user presses CTRL-X, the app ends. Note that the link presented at the top of this page is neatly spaced and formatted for easy readability (it's actually 428 lines, with the extra spacing). A version without the extra lines and spacing, still readable and non-minified, is available at: http://re-bol.com/shortest_examples.r (359 lines). Most software development tools will require many thousands of lines of code to recreate these apps, and those tools will also typically require hundreds of megabytes, if not gigabytes, of complicated infrastructure (SDKs, IDEs, libraries, multiple layers of dependencies and supporting technology (often from third parties), API documentation, etc.) to recreate these apps. You will NOT find another software development system which can produce such a wide variety of broadly useful, composable, generally productive, concise code examples in a less bloated, simpler to implement and simpler to use environment, anywhere. By modern mainstream standards of development tooling, the thought of creating these examples with such a dramatically small code base, using absolutely nothing but a 600K tool is truly incomprehensible, and such a feat is utterly impossible using any other mainstream language/tool kit in common use. Many of these examples are so simple that they can be explained even to a child, without any previous coding experience, in a matter of minutes. For more insight about how Rebol reduces bloat and achieves unheard of simplicity and productivity, see: http://redprogramming.com/Why%20Rebol%20and%20Red.html The Rebol interpreter is so astonishingly small, and purely devoid of bloat, that the entire environment, for every popular operating system, can be sent as an email attachment smaller than a typical digital photo. And keep in mind that Rebol is a mature professional tool. It's been used and proven in demanding commercial production environments for nearly 2 decades. An open source (Apache licensed) version is available for desktop, server, mobile, and web platforms, and the new Red language (modified BSD license) is preparing to bring Rebol to a whole new generation of platforms and users. If you've ever thought that modern software development is a confounded mess, then take a look: Rebol coding quick-start: http://re-bol.com/rebol_quick_start.html Rebol App Builder (a fun way to learn): http://withoutwritingcode.com CRUD Tutorial: http://re-bol.com/data-management-apps-with-rebol.html Free 800 page book (really dig in): http://business-programming.com WHY REBOL?: http://redprogramming.com/Why%20Rebol%20and%20Red.html Ask questions at http://rebolforum.com Extended short examples: http://re-bol.com/short_rebol_examples.r MANY more, and more complex examples: http://re-bol.com/examples.txt Be sure to dig into all the code at: http://rebol.org Multi-user apps: http://re-bol.com/rebol-multi-client-databases.html Mobile/Web apps with jsLinb/Sigma and Rebol: http://re-bol.com/jslinb A commercial GPL app written in R2: http://freeconsignmentsoftware.com A huge commercial success story: http://www.atronixengineering.com Another successful business built on Rebol: http://www.nlpp.ch Copyright 2000-2017 Nick Antonaccio