Picrolyte.com is an image sharing website with a freemium business model. Subscribers (who pay $10/year) see no ads when searching, can perform private image searches, upload Picrotalk scripts, and download public scripts. Public scripts can display non-local images (over the Internet), whereas local scripts can only display local images. Owners of private images remain anonymous to other users.

Picrotalk is a proprietary scripting language. To launch a Picrotalk script, visit localhost:6776 in your browser after running the p.bat or p.sh file. Picrotalk is implemented using Java. Picrotalk also makes use of Jetty and Vaadin. Many Picrotalk scripts are accompanied by an author-defined database.

Image Database Structure

Every image is stored in either an image folder (called a picro, which may contain multiple images) or a folder with a single-character (alphanumeric) folder name contained in an image folder. Every image in a single-character subfolder is duplicated in the parent folder. All picros (rows of pictures) are stored in bytros. The image database of a given user consists of a list of bytros. Bytros can be either public (everyone by default, followers, email list) or private. Public bytros have a virtual flag: if set, has pointer to another public bytro. Picros can be either ordered or random. Images can have captions included in a caption buffer of up to 255 characters. Optional image tags are comma-separated, terminated by a mandatory period, and the rest of the caption buffer is treated as the image caption. The subject list is a list of people. Comments are linked lists (upper and lower level lists) containing 255-byte text fields.

User Search

Whenever a user searches for images belonging to other users and winds up at a new user who is not included in the current author-defined database, the image database of the new user is scanned. At that point the new user's data is then included in the author-defined database. The scan takes place before the original user performs another search or stops browsing the Picrolyte database. Text searches are indexed, not linear search. Script authors receive 80 percent of ad revenue generated during user searches (including ads displayed by default script user searches).

File/Folder Names

  • Picronames, bytronames, image file names, tags
  • Only alphanumeric chars., hyphens and spaces allowed
  • Every hyphen and space is delimited with alphanumeric chars. (before and after)
  • Tags beginning with '#' and then consisting solely of digits are treated as subject ID numbers
  • In case of duplicate file names, append space followed by a positive integer in parentheses

User Digraph

  • Followers: these users follow you
  • Following: you follow these users
  • History picro: selection of images with optional comment threads (by followers; you make first comment which may be blank, and can make further comments and/or replies)
  • Any comment can have replies and replies to replies
  • Images not in history can only have one comment, by the image owner
  • Feed picro: chronological image list from history picros of users you are following (images of same user in same day grouped together)

Default Script

The following list of commands summarizes the default Picrotalk script. Images are displayed in either a grid of 3 rows by 6 columns, or a single large image. The image grids corresponding to picros are called grid inners. The grids corresponding to "0" subfolders of picros are called grid cores. The grids corresponding to the bytros in the database are called grid outers. The Picrolyte.com website includes Java-based functionality equivalent to the default script.


  • Right Arrow: next image/grid/picro
  • Left Arrow: previous image/grid/picro
  • Click: picro name > grid innner > single
  • Click: grid core > single
  • Click: grid outer > single outer
  • Up Arrow: single > grid inner > grid core > grid outer > cycle thru bytro list
  • Up Arrow: single outer > grid inner
  • Down Arrow: single outer > grid outer > grid core > grid inner
  • Down Arrow: single > enter comments mode if comment exists or user owns this image
  • Esc: cancel comments mode if enabled
  • Enter: toggle display of bytro name, list of picro names / grid or single
  • Ctrl+Enter: picro name > display clickable list of initial image tags of grid core images > single when clicked
  • Esc: clickable list > list of picro names
  • Sub-grid exists: grid image has black background (or border)
  • Click: single > next sub-grid image
  • Space: single > display digit/letter of current sub-grid
  • Ctrl+Space: edit sub-grid list
  • Alt+digit/letter: display sub-grid
  • Esc: cancel display of sub-grid
  • P: add/remove people tag
  • Ctrl+P: edit people list
  • H: grid > toggle history mode (blue border: filter out non-history)
  • H: single > toggle history flag of image (blue border)
  • Ctrl+H: grid > toggle history picro (green border)
  • Ctrl+J: grid > toggle feed picro (green border with blue user names below images)
  • G: general settings
  • R: reshuffle image lists
  • Z: initialize current list indexes to zero
  • S, Ctrl+S: sync bytro/database with image file hierarchy
  • D: single > delete image file
  • X, C: single > cut/copy image file
  • X, C: grid > clear clipboard (cut image: warn user)
  • X, C, V: cut/copy/paste picro or bytro
  • Ctrl+D: delete picro or bytro
  • U: undo cut/copy/delete/paste
  • Click: grid > paste image (insert in list if ordered picro)
  • E: edit picro/bytro name
  • E: single > edit caption (enter comma-separated tags, a period, and a caption)
  • K: cycle > display kaptions > display tags > images only; (red text/bottom border displayed if comments exist)
  • M: toggle max mode, maximize size of single image (the default)
  • F: find (perform search)
  • F1, ?: cycle > help screen > no help displayed > column(s) of command letter buttons
  • Q: quit

Implementation Steps

  1. Finish Picrotalk syntax checker
  2. Handle Picrolyte command, Up Arrow: single outer > grid inner
  3. Release Picrolyte on GitHub (Python script)
  4. Implement web-based Java version of default script
  5. Modify default script to work locally
  6. Learn Jetty and Vaadin
  7. Implement indexed search
  8. Implement display of ads
  9. Implement collection of subscription fees
  10. Implement disbursement of ad revenue
  11. All users get free 6-month subscription during 1st year after launch
  12. Launch website
  13. Purchase Google AdWords advertising
  14. Implement Picrotalk code execution, ver. 0.1
  15. Finish Picrotalk 1.0
  16. Implement Picrotags
  17. Integrate Picrotalk with Picrotags
  18. Write default Picrotalk script
  19. Release Picrotalk SDK 1.0
  20. Implement Picrotalk App Library
  21. Seek angel investor
  22. Hire programmer(s) to make Picrolyte scalable
  23. Implement code editor
  24. Implement WYSIWYG Picrotags editor
  25. Release Picrotalk SDK 2.0
  26. Develop Android app version of default script
  27. Exit strategy: release open source versions of Picrotalk SDK and Java (local only) default script

Exit Strategy

Picrolyte is highly unlikely to succeed, which is why I have an exit strategy (see last step in numbered list above). Only maybe 10 percent of dot-com startups succeed, and the chances of Picrolyte are probably less by at least one order of magnitude. It competes with Google and Facebook (Google Photos and Instagram), both of which are free. It's a bit like buying a lottery ticket: better odds, but much higher price. If it does succeed, then it's 48 percent likely to make a small amount of money, 48 percent likely to make a large amount of money, and 4 percent likely to be acquired by some big company, possibly making me a multi-millionaire. If it doesn't succeed in the marketplace but I succeed in finishing it, at least I will have created a new open source programming language and a tool for organizing your image files on local computers, 3 or 4 years down the road.

[ Back to Top ]