Jispoteach

Jispoteach

 

Jispoteach is a distance-learning website which is based on an open source language called Jispotalk. Jispotalk (along with Bracetagger, a markup language) is used to develop web-based apps used by the tutors and students to interact with each other. Tutors must pay 15 percent of the fees they charge their students to Jispoteach: 5 percent goes to the developers of the web-based apps, 5 percent goes to the educators who develop the curriculum, and 5 percent goes to Jispoteach.com (the House).

Typewriter Font

All body text rendered to the browsers of end-users in every Jispoteach app is in a mono-spaced, typewriter-style font. Every character takes up 2 square cells: an upper cell and a lower cell. Superscripts and subscripts are handled by employing a vertical offset of one square cell. Header text is also mono-spaced, and each character takes up 2 oversized square cells.

Additional Formatting

The grid of characters can be subdivided into panels, which can themselves be subdivided into more panels, and so on. Any panel can contain zero or more text boxes, which may overlap each other. Vertical grid lines each take up one square cell per row of square cells. Horizontal grid lines are displayed in the same pixel row as underscore characters. Any row of square cells containing a horizontal grid line which is 2 pixels wide is taller by exactly one pixel. The following bracket characters: ( ) [ ] { } can be oriented vertically or horizontally, taking up a single column or row of at least 2 square cells, respectively. Widgets such as check boxes, radio buttons, and combo box arrows take up 4 square cells (2 by 2). Images, animations, and diagrams are contained in canvas objects, which can appear anywhere panels can appear.

Rich-Text Mode

Eventually Jispoteach apps will support rich-text mode, in which a given header or paragraph of body text can consist of a single variable-width font. Paragraphs have before/after spacing, left/right indent, and line spacing (single, double, 1.5, etc.). Panels have margins on all 4 sides. Beginner app writers start off with mono-space mode, and then advance to rich-text mode. In both rich-text and mono-space modes, text is rendered to the HTML5 canvas object. Some features like form fields and submit buttons use normal HTML.

Grading of Content

Users can assign a letter grade (on a 4.0 scale) to the apps/tutors they use: A = excellent, B = good, C = average, D = poor, F = fail. Users are warned prominently if a given app/tutor received any F grades in the past year. If a given user has given out more than one F grade to multiple apps/tutors in the past 12 months, then those grades are flagged as possibly unreliable.

Page Hierarchy

Since Jispoteach uses Bracetagger instead of HTML, that Bracetagger code cannot be discovered by Google users doing searches. To get around that limitation of Jispoteach, a hierarchy of limited HTML pages exists. Each page has an HTML title, a description containing one or more HTML paragraphs, a heading, an optional short one-line description, an optional image (with an optional caption), and zero or more user-defined field-value pairs. All HTML pages contain the same set of field-value pairs. If the value is a null string then the corresponding field name is not displayed. The user can click on Up, Down, Next, Previous to navigate the tree, as well as clicking on the heading to display the corresponding Bracetagger web page.

Scalability

All Jispotalk data is stored in 256-byte pagelets or 4K array pages. All pages (except array pages) have 16 pagelets. All data of a given user is stored in the same 4 GB file on disk, and that file may contain data for more than one user. As many 4 GB files as can fit on one server may exist, per server.

Any one server can have up to 4 GB of RAM devoted to Jispotalk data encompassing one or more users. To resolve a 32-bit data address for a given user, the first byte indexes the user root table of up to 256 addresses. Each address in the user root table points to a user block table of 256 addresses. The second byte in the data address indexes the user block table. The indexed address points to a 64K block. The first nybble of the third byte in the data address points to the 4K page in the block. The second nybble of the third byte in the data address points to the 256-byte pagelet in the block. The fourth byte in the data address indexes the final data location within the pagelet. For array pages the least-significant 12 bits in the data address indexes a particular array element contained in that page.

Every 64K block in RAM contains a list of 16 page headers, and each page header is of size 8 bytes. This list replaces pagelet 0 of page 0 (page 0 is never an array page). The page header contains 2 bits: swapped-out and modified. If the page is swapped out, then the rest of the page header contains 20 bits pointing to the corresponding page in the 4 GB file on disk. If the page is not swapped out, then the rest of the page header contains 2 partial data addresses, each of size 20 bits. These partial data addresses point to the next and previous pages in RAM (whether or not the corresponding page is part of the free-page list). Whenever a page in RAM is accessed (read from or written to), it is moved to the head of this doubly linked list. Whenever a page in RAM needs to be swapped out, it is selected from the tail of the doubly linked list.

Implementation Steps

  1. Learn to use GitHub with Java project
  2. Design Jabbler: multi-player Scrabble (single-user)
    1. Write Jabbler pseudo-code - done!
    2. Register Jabbler project with GitHub
    3. Implement Jabbler command-line version - done!
    4. Add robot player(s)
    5. Two human players use mouse/keyboard - ignore
  3. Implement Jispotalk Assembler
  4. Implement JispoTalk Runtime Environment (JTRE)
  5. Implement Jispotalk Compiler
  6. Learn how to develop web applications using Java
  7. Implement converter: Jispotalk-to-JavaScript
  8. Use Jispotalk as server-side scripting language
  9. Convert Jabbler from Java to Jispotalk
  10. Make Jabbler multi-player
  11. Implement Jispotalk editor in Java
  12. Implement Bracetagger editor in Java
  13. Convert code editors from Java to Jispotalk
  14. Expand Jispotalk libraries: widgets, graphics, games, math, etc.
  15. Design website
  16. Implement website
  17. Go live
  18. Purchase Google AdWords advertising
  19. Implement billing
  20. Implement Rich-Text mode
  21. Add Rich-Text mode to Bracetagger editor

About Me

I am Mike Hahn, the founder of Jispoteach.com. I was previously employed at Brooklyn Computer Systems as a Delphi Programmer and a Technical Writer (I worked there between 1996 and 2013). At the end of 2014 I quit my job as a volunteer tutor at Fred Victor on Tuesday afternoons, where for 5 years I taught math, computers, and literacy. I'm now a volunteer computer tutor at West Neighbourhood House. My hobbies are reading quora.com questions/answers and the news at cbc.ca. About twice a year I get together with my sister Cathy who lives in Victoria. She comes here or I go out there usually in the summer. At those times I'm much more active, but most of the year I tend to lie on the couch a lot, and not be very active. I do, however, visit my brother Dave once a month or so and I also visit my friends Main and Steph once or twice a month.

Contact Info

Mike Hahn
Founder
Jispoteach.com
2495 Dundas St. West
Ste. 515
Toronto, ON  M6P 1X4
Canada

Phone: 416-533-4417
Email: hahnbytes (AT) gmail (DOT) com
Web: www.hahnbytes.com

[ Back to Top ]