Skip to content
AJ Jordan edited this page Jun 23, 2017 · 3 revisions

Rough notes from the party discussion (which lasted about 1.5 hours):

  • XML-based syntax; required to conform to a DTD
  • Type system combines Perl and JavaScript's, and borrows PHP's combined Array/AssociativeArray type
  • Operator precedence is difficult, so operators are evaluated left-to-right
    • This means that e.g. x = a + b would assign a to x and then return a + b
  • eval fully supported - works by invoking the compiler and dynamically loading the resulting file into the address space, then jumping to it
    • Note that this introduces a runtime dependency which may or may not be the same version the binary was compiled with
  • GOTO is a first class citizen
    • Perhaps replace this with JUMPFROM?
  • Comes with M4 macros builtin
  • Classes can have multiple superclasses; in the case of method name conflict, both versions are raced against each other and whichever one finishes first is the value that's used
    • This is where the name comes from
  • Build system is autoconf
    • Generates files like Makefiles, except they're whitespace-sensitive
    • LF is a newline, but CR is an important part of the grammar (except on platforms that don't use LF as a newline character)
  • Strings are EBCDIC, unless they use characters outside that charset, in which case they're UTF-16
  • Shell-like variable expansion ($foobar), which has the same semantics as shell where whitespace can result in multiple words unless quoted properly
  • Shell-like backtick syntax to shell out to the system
    • Unclear if this would capture stdout or stderr
  • Unclear what the standard library would be
    • Boost?
    • Other things I can't remember?
  • Compiler implemented as a daemon which will accept source code over a raw TCP socket
  • Requires the use of a browser-based custom IDE which talks to an HTTP daemon
  • Source code is stored in binary format
    • Bold, italics, etc. will be important - maybe keywords have to be bold?
    • Require ALL CAPS to talk to the network?
  • Manual memory management
  • Only one file per program
    • Requires realtime pair programming for >1 person
      • Maybe you have to have >1 person?
    • Compiler autobuilds whenever all people stop typing
    • On success, IDE takes a picture of programmers and that becomes the change log (it'll detect if it's all black)
  • Dropping down to assembly is first-class (and is required for some operations)
  • Method invocation uses an XPath (CSS?) expression to name the method
    • If it matches >1, all results are raced and the fastest one is the return value
  • <if>s don't have anything in-between the two expressions, it's just whichever one returns first
  • Multithreading support, but no mutexes or locks
  • Developer can optionally PGP-sign the source code sent to the compiler, but failure to do so will result in a warning being printed when the binary starts up that warns that the binary was compiled insecurely
  • Package manager based on Eclipse's
  • Binaries contain phone-home telemetry
    • DNS is resolved at compile-time and the IP address is embedded directly onto the binary (compiler will crash if it doesn't have network access)
    • If the IP address embedded in binary can't be connected to to report telemetry data, the binary will crash
  • Binaries are DRM'd
  • Autoupdate happens on start without user consent; old binaries are kept but won't run due to the DRM
  • Failure of the developer to check in regularly will cause the binary to be marked insecure, causing the "insecurely compiled" warnings at startup
  • Binaries contain ads
  • Developer can pay to give users the option to pay to have ads removed (developer takes a cut in this case)
  • All logging goes to syslog (crashes if it can't connect)
    • Logs all user keystrokes
    • Maybe also includes just memory addresses?
  • ...

Session ideas

  • All variables have to be emoticons
  • Editor uses Comic Sans (or maybe a terrible X11 pixel font that looks terrible on all screens?)
  • All keywords are either red or green
  • Multiplication operator is a paid feature
    • Emulation is possible with plus/assembly though
  • Maybe AND, OR, XOR is free, but you have to implement plus with bitshifting?
  • Maybe global variables are free, but local variables are paid?
  • Automatic security holes?
    • Maybe it exposes all files on the local machine?
  • Append-only file format?
  • Only datatype is a blob?
  • Program crashes if not setuid root? For the DRM
    • Maybe DRM should require kernel extension? Probably because the DRM requires hardware plugged into a serial port
  • Circular inheritance?
  • Type hint annotations but they only output warnings if you pay
  • WebVR glasses required
  • Can either use smartphone or IE5/Netscape 4 with a real keyboard
    • Keyboard only exists in VR
    • Have to drag-and-drop letter from onscreen keyboard?
      • You have to aim and it always goes left
      • Backspace is the same size as any other key
  • Have to turn a crank to scroll the page in VR?
    • Sitting on a bike?
  • Compilation errors
    • Crashes the compiler and you get a coredump?
    • Compiler inserts a garbage collector statement on all the memory and then keeps running the process?
    • Vigil-style deletion
  • Tetris in vs. mode for pair programming/race?
  • Really deep Java-like package hierarchy?
  • stdout/stderr need to be explicitly set up
  • Everything has to be manually set up
  • OpenGL pipeline model inspiration?
  • If you don't set up a color for text output, it defaults to the same color as the background
  • Background phone notifications
  • Ad popups
    • Have to wait or interact with ad before continuing
    • Use eye tracking to make sure you look at the ad
    • Controls on dialog to dismiss don't work so the hitbox is different from the text
      • Has layers on top that spawn more ads
    • Gotta do it the right way or the original IDE window closes
    • Close button works ~60% of the time
  • Requires all other browser tabs to be closed unless you pay for the ability to e.g. look at the documentation at the same time
  • a b + instead of a + b?
  • How compiler interprets ambiguous circumstances is a race
  • Certain operations require using a regex
    • All language statements are technically regular expressions
      • Maybe just for variable references?
  • If you use Perl-compatible regexes it'll include the Perl interpreter into the process
    • Runtime dependency
  • stdlib includes a really outdated OpenSSL version
  • Add something to regex language for emoji (happy faces, vegetables, etc.)
    • Undocumented
    • Lets you say "I want the third result" or something
    • Implemented using an image processing library
  • Pick face emoji by making that expression into the camera
  • Access backups by correctly making the face you were using when typing it
    • Masks to make this easier
  • If emotion tracker detects that you're frustrated:
    • Gives you a timeout which makes you more likely to hit the browser timeout
  • Specify the base of every number?
    • Common bases are paid features, only ships with base 9
    • Or maybe all bases that are multipliers of 3?
    • Only accepts numbers in hex if you perform correct curses
  • Content moderation
    • Either it monitors language you're using in source, or looks at what you're trying to use and says "that's dangerous, don't do that"
    • Shifting and bizarre standards (poopyhead isn't allowed, f-word is)
  • Only adults allowed to use this
    • ID check?
    • Records video?
    • Requires a breathalyzer?
    • Recurring credit card charge?
    • Requires NFC?
  • Editor supports word wrap but it hard word wraps if you use the wrong resolution
    • Lines of code determined by word wrap
  • Documentation
    • Audio?
    • YouTube videos?
    • TeXinfo?
    • Custom Silverlight-based, fast-forwardless video player?
    • Requires registration for a course?
    • Interstertial commercials that play over documentation
    • Has no concrete examples, just describes the process
    • Hardbound manual available though (in the same font as development environment)
    • "Turn to this page in the manual and type what it says on line 7" for antipiracy
    • Documentation written in native language of whoever is working on it
      • Outsourced to many places
      • Different parts are in different languages
      • Run through Google Translate when documentation person changes
        • Multi-step
      • NDA required
      • Not given original, just translated version
      • People with >1 language are only allowed to view it in 1
  • Everything is a <while> loop, and you just have to change the condition
    • Or get out with a GOTO/JUMPFROM
  • GOTOs specified by literal line numbers

Memory management ideas

  • Garbage collector in stdlib but it sucks?
  • Automatic garbage collector but it has an "are you sure?" callback?
Clone this wiki locally