
So you want to build a generator - detaro
http://galaxykate0.tumblr.com/post/139774965871/so-you-want-to-build-a-generator
======
AstralStorm
A generator is also known as a compiler. The main difference is that in a
generator, sometimes the rules are hardcoded.

In fact, almost all of books pertaining to design of compilers will help you
in designing good generators.

Additionally, not mentioned in an otherwise great article directly, only
implicitly in those "frameworks" part, is an expert system. An expert system
is more general logic framework than grammar-based system, that uses first and
higher order logic (backward, forward propagation, "blast" methods,
simplifications etc.) to derive solutions given some starting "nouns", the set
of which can be generated using any other method. The main pro of an expert
system is that if the rules are properly encoded, it will not generate
anything outside the constraints (except maybe bottom which means invalid
input). This makes expert system reliably easy to control, and a large enough
expert system can actually encode a grammar _and_ a good story structure.

The main drawback of those is that until recently, they had trouble dealing
with existential statements (e.g. for every monster in a set, the monsters XP
must be within a delta and increasing by at least delta2) but that has been
mostly fixed in advanced languages such as Isabelle/HOL - things have come a
long way since Prolog.

As for "perceptual differentiation", tere have been attempts to construct
difference-tracking neural networks, mostly successful, and use a certain way
to generate novelty and detect such input, in addition to being self-training.

Sadly, nobody yet succesfully combined both of the above to create a machine
to generate novel logic. That would be sort of a true AI - maybe a worthy
extension of OpenCog.

~~~
CJefferson
_A generator is also known as a compiler._

I'm really not sure I agree with this, at least at any useful level.

I work on solving constraint problems (one of the mentioned options in this
article). I have a reasonable knowledge of compilers, and excellent knowledge
of the inside of a constraint solvers, and there is very little, if any,
practical overlap between the two.

------
EliRivers
I thought this was going to be about making your own electricity from some
kind of rotary motion. I am so old.

~~~
Can_Not
I thought this would be about code scaffolding tools (only because of my
recent frustration and research in the subject, which I will explain now).

I've been looking around for an authentication microservice and/or nodejs
application starter kit. The core idea is that passportjs is installed with
sane defaults, ready to add some social network support, ready to enable as an
openID provider. For the user: register, login, edit profile, maybe a public
``GET /users/:username``. The appropriate middleware export to use in
microservices (Supporting Laravel and flask would be a gratuitous plus).

Most of what I've found is not explicitly the scaffolding I'm looking for. I'm
not looking to use a nodejs version of WordPress (aka automagic monolith
framework with plugin ecosystem). I'm looking for something where the
application is scaffolded out instead of hidden behind automagic. Something
where the express/koa is laid out in traditional webserver fashion ready for
natural tweaks, addons, etc. No opinionated subversion of control from the
dev, no reverse engineering and forking the framework for trivial tweaks.

------
gabemart
Something I've been wondering:

If I create a generator with 10 possible unique outputs, and each output is
substantial enough such that it would qualify for copyright protection had I
created it directly, do I have any copyright over the outputs of my generator
by virtue of creating the generator itself?

What if I build the generator but don't actually run it myself, and instead
other people run it by clicking the "generate output" button?

How about if my generator has a million possible unique outputs? Or ten
trillion?

~~~
pavlov
The first case is clear. The works are created by you, and the involvement of
a tool of your own making has no effect on copyright. If you make a line-art
generator program and print out 10 million sheets of paper filled with random
scribbles, they are all copyrighted works by you, just not very interesting
ones.

The second case depends entirely on how you license the generator program. If
you sell the generator and don't make an explicit claim over produced works,
they are the copyright of the person who clicked the button. The act of
creation doesn't have to be more complicated than that (after all taking a
photo also involves just clicking a button).

~~~
gabemart
> If you sell the generator and don't make an explicit claim over produced
> works, they are the copyright of the person who clicked the button.

I'm not sure this would meet the "threshold of originality" standard [1]. The
simple act of pushing a button _can_ meet the requirement for "at least some
minimal degree of creativity" (as in your example of taking a photo), but I
don't think it would do so when there is no relationship between the manner or
timing of the button push and the output of the tool.

[1]
[https://en.wikipedia.org/wiki/Threshold_of_originality](https://en.wikipedia.org/wiki/Threshold_of_originality)

~~~
pavlov
Most generators have a random component which is seeded from a timestamp. In
that way, the user provides the creative input to the generator.

If the generator doesn't randomize anything but just produces a preset
sequence of outputs, that's different -- my feeling is that such a program's
complete output is a single work by the program's author, since it's not
affected by any external input.

------
agumonkey
This talk was related to generation and surprises
[https://news.ycombinator.com/item?id=10000412](https://news.ycombinator.com/item?id=10000412)

