Home
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 assigna
tox
and then returna
+b
- This means that e.g.
-
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)
- Requires realtime pair programming for >1 person
- 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?
- ...
- 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 ofa + 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?
- All language statements are technically regular expressions
- 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
- Garbage collector in stdlib but it sucks?
- Automatic garbage collector but it has an "are you sure?" callback?