Sharebiteach

Sharebiteach Tutors

 

Sharebiteach is an edutainment software development kit used to create web-based/Android games and lessons (called apps). All apps are either single or dual-user and are written in a Python-like language called Sharebitalk. Screen layouts are structured using a markup language called Sharebitags. Web server functionality is provided by a web container called Jetty.

Business Model

Sharebiteach links tutors with those needing instruction, and receives 15 percent of the fees charged to students by the tutors (10 percent goes to Sharebiteach and 5 percent goes to the app-writers). The app-writer revenue is distributed in proportion to the user-minute counts for each app. The user-minute count of a given app/user is incremented whenever a user is logged into that app at any time in a given minute (a day has 1440 minutes).

Monospace Mode

In monospace mode, all body text rendered to the browsers of end-users in every Sharebiteach 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

In rich-text mode, 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 monospace mode, and then advance to rich-text mode. In both rich-text and monospace 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.

Console Mode

User enters command-line in a text input field. Sharebiteach displays zero or more lines of output. When input from the user is needed, another text input field is displayed. Entering a single space in the text input field causes a page refresh, in which all lines of output between the current and previous text input fields are redisplayed at the top of the current web page. Entering a single space when nothing else is displayed on the current web page causes Sharebiteach to cease execution.

Events

  • Keyboard: key up, key down
  • Mouse: mouse up, mouse down
  • Clock Tick: 0.5 Hz
  • Character paint: triggered by keyboard/mouse/clock event

Object Primitives

  • Bitmaps
  • Vectors: pen color (on/off), multiple fill colors, single pen-width
  • Shape list:
    • line, rectangle, rounded rectangle, ellipse, pie
    • each shape has one vector
    • pie has begin/end angle (float)
  • Label
  • Character: bitmap, shape list, and/or label

Containers

  • Cell
  • Canvas
  • Grid
  • Text box:
    • found in cell/canvas/grid
    • contains Sharebitags code

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 - done!
    3. Implement Jabbler command-line version - done!
    4. Add robot player(s) - done!
    5. Two human players use mouse/keyboard
  3. Implement Sharebitalk Assembler
  4. Implement SharebiTalk Runtime Environment (STRE)
  5. Implement Sharebitalk Compiler
  6. Implement Console mode
  7. Implement Team Monitor
  8. Cold email Toronto/Vancouver-based GitHub members who use Java
  9. Steph and Dr. Soni to approach U of T Computer Science dept.
  10. Implement Monospace mode
  11. Implement Rich-Text mode
  12. Implement Level Editor
  13. Make Level Editor dual-user
  14. Make Jabbler dual-user
  15. Implement Lesson Player (monospace)
  16. Make Lesson Player dual-user
  17. Make Lesson Player support rich-text
  18. Add Sharebitalk scripting to Level Editor
  19. Add Sharebitalk scripting to Lesson Player
  20. Recruit Java Programmer on the autism spectrum using Specialisterne
    1. Must know some front-end web programming
    2. Knowledge of back-end Java web programming or Android an asset
  21. Mike to develop Sharebitalk SDK
    1. Code editors: Sharebitalk and Sharebitags (Eclipse plug-in)
    2. Syntax highlighting, unlimited undo/redo
    3. Graphical Sharebitags editor
  22. Web Programmer to develop website
    1. Tutor/app rating
    2. Tutor search
    3. Tutor scheduling
    4. Work with Mike to develop Android app functionality
  23. Go live
  24. Purchase Google AdWords advertising
  25. Expand Sharebitalk libraries: widgets, graphics, games, math, etc.
  26. Enable Sharebitalk to call user-created Java libraries
  27. Add multi-user support ( >2 users)
  28. Finish implementing Android app functionality

Our Team

Those who know Java and wish to participate in Sharebiteach development are more than welcome to read up on our project and determine which aspects of Sharebiteach development are of interest to them. Sharebiteach is mostly open source but includes a closed source component, therefore our team members receive equity (profit sharing) but otherwise work on a volunteer basis. You would work from home and are free to work lots of hours or very few hours, whatever is most convenient for you. Not all team members receive the same amount of equity. Higher performing team members receive more equity than team members who contribute to a lesser extent.

All team members fall into 3 categories: partners, associates, and entry-level members (ELMs). Partners make substantial contributions to the project, ELMs make only trivial contributions, and associates are somewhere in between. All partners, including Mike, the founder, receive the same amount of equity. All associates receive an equal share of equity which adds up to the amount of equity received by 1.2 partners. The amount of equity received by each associate is capped at 40 percent of the amount of equity received by each partner. Similarly, all ELMs receive an equal share of equity which adds up to the amount of equity received by 1.2 associates. The amount of equity received by each ELM is capped at 40 percent of the amount of equity received by each associate. All team members are required to download the Team Monitor application. Partners and associates must sign an employment agreement before they are allowed to access the private repositories where the source code of the Sharebiteach.com website is maintained.

Team Monitor

The Team Monitor application is written in Java. The user selects from 7 open source projects: Sharebitalk, Sharebitags, Monospace Mode, Rich-Text Mode, Sharebitalk Editor, Sharebitags Editor, WYSIWYG Editor (as well as closed source projects pertaining to the website). The user indicates which source files have been added/modified/deleted; the nature of the work: testing, debugging, adding new code, writing design specs; descriptions of work performed; and the approximate amount of time spent on each task. The user uploads Team Monitor data on a weekly basis.

Sponsor Organization

Mike's friend Steph is a student at U of T, and Mike's psychiatrist, Dr. Soni, teaches at U of T. Mike was a computer science student at U of T for one semester in his second year. After the Sharebitalk programming language is working, it is hoped that both Steph and Dr. Soni will approach the U of T Computer Science department. It is then hoped that U of T will eventually become a sponsor of Sharebiteach. Steph may or may not agree to work as the Tutor Coordinator after she graduates, supervising the tutors. She would be paid a competitive wage and would receive partner-level equity, as the Tutor Coordinator or working in some other capacity (possibly software development). If she declines to become the Tutor Coordinator and does not wish to work for Sharebiteach, she would still receive associate-level equity, provided that she agrees to approach U of T and that institution becomes a sponsor of Sharebiteach.

[ Back to Top ]

About Me

I am Mike Hahn, the founder of Sharebiteach.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. Prior to starting Sharebiteach I used to lie on the couch a lot, not being very active. Now I'm busy most of the time. I 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
Sharebiteach.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

Scalability

All Sharebitalk 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. Server resources are finite and apps with high demand for those resources are subject to being throttled, limiting performance by an order of magnitude or more.

Any one server can have up to 4 GB of RAM devoted to Sharebitalk 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.

[ Back to Top ]