Hacker News new | past | comments | ask | show | jobs | submit login
Vodka is a creative coding environment for creative writers (LISP) (github.com/eeeeaaii)
104 points by tartoran on Nov 19, 2020 | hide | past | favorite | 62 comments



If you can't think of a descriptive name for your tool or product, maybe you should pause, think on it, and resist the temptation to pick a completely irrelevant one-word noun.

Call me a codger. I don't care. This crap was old ten years ago. It's still old.


It's hard to recall how many (probably hundreds) of projects (from humble command line utilities to social movements) I have imagined but never started and ultimately forgotten just because I couldn't come up with how to name the file/folder for them. Perhaps some could change my life or the world but now they're lost to oblivion.

Guess what's I am doing right now? Googling for a good generator of cool-looking gibberish words which would provide a steady source of meaningless names for my projects.

I would rather use UUIDs if they were not so hard to read and memorize.

I also love my project names to sound ironical so nobody would take them too serious, expect much and judge too hard. E.g. I actually find "git", "shit"[1], and "gimp" perfect names (whoever doesn't know - try find out what do "git" and "gimp" words mean besides the respective software products).

Anything can be renamed (or left as it is) once you grow in confidence the actual project can probably succeed.

[1] https://news.ycombinator.com/item?id=22303710


Try this:

  curl -s -X POST "https://api.gfycat.com/v1/gfycats" -H "Content-Type: application/json" | jq .gfyname -r
I call it "gfyname" and stick it in ~/bin. Then you can do `while true; do gfyname; done`

  AchingVengefulDungenesscrab
  AgitatedLastingBorzoi
  FairImmaculateGelding
  WeightyInsistentJellyfish
  UnevenHopefulDungbeetle
  UntidyWelloffBellfrog
  PracticalDismalCat
  UnkemptWebbedGreendarnerdragonfly
  FaintHauntingFairybluebird
  RichPerkyDogfish
  MelodicRecentBarracuda
  GenerousBronzeBarasinga
  QueasyFewHarlequinbug
  UnrulyFaintApisdorsatalaboriosa
Melodic Barracuda isn't terrible. Weighty. Dismal Cat. And so on.

Looks like it sometimes returns `null` now, which is a shame. It used to be rock solid. It's nice for generating names for your temp files.


Thanks. The names themselves are a little too long but seem a good source of what to start with. E.g. I would take UntidyWelloffBellfrog and remove parts of it to get Udyber or Tyllog. Somewhat sad fact: neither of these semi-random letter combinations actually is not an existing word - googling them yields quite a long list of occurrences. And there even is a GitHub user named Bellfrog already.


> neither of these semi-random letter combinations actually is not an existing word

I think that's the point of that UID scheme, though - to make them easier to remember than the usual ?v=a1Vp87d_x or whatnot.

But then, two-word names could work as codenames for project. Untidy Bellfrog sounds nice.


No, what I mean is not about this. I just mean it's so hard to find totally non-existent, let alone real unused words that even seemingly-random letter combinations turn out to be known words in some languages.

For example I've used UntidyWelloffBellfrog just as a "seed" to remove random parts and get Udyber and Tyllog look more concise to me and which I would expect to be non-existent words. Yet it turns out these words exist and can be found all over the Internet.


Five of us were investigating starting a company together. After a few meetings, the issue of a name came up and we arranged for a face-to-face meeting to brainstorm.

I didn’t want a name like, System Administration Software Inc because what would we do if we ended up writing software for garage door openers.

I suggested picking a catchy name that wouldn’t identify what we made too narrowly.

Among the names I proposed that I still remember over 30 years later were Apache and Emerald City Software; someone else proposed Veritas. None of these were unanimously liked by the group. I then recalled a unique hostname used by a friend and suggested Tivoli, everyone liked it and the name is still used today.

There was one wrinkle, when I went to the state’s Attorney General’s office to register the name for incorporation, I discovered that there was already a Tivoli Inc in Texas. (I didn’t realize that there was a small town in Texas by the name Tivoli.) So I tacked on another word and the company’s new name became Tivoli Systems.

Out of the original group, only two of us actually started the company. We quit our jobs and went all in.


There was a Tivoli that was acquired by IBM. Was that you guys or the other company?


In my earlier years, I tended to use swearwords, exclamations, etc ("meh" and "nub" are still gotos) to name functions that I wasn't exactly sure what I would do with. If they were worth keeping beyond a short programming session (which was usually not the case), then I gave them a real name later.


I would hardly call it irrelevant. The name means “Vodka helps you write creatively”, which is a sentiment Ernest Hemingway would have agreed with.


As a matter of fact, I first thought the title was a metaphor like "there is no lack of creativity, only lack of vodka".


hunter thompson would agree with weed, or cocaine - all of these aren't the right choice for an app name, it's clever, but lacks enough context to require enough active thinking to be jarring


I just assumed it was called Vodka because that's what I'd need to deal with anything Lisp-related. :-) I guess they could have called it "OG Kush" too...


Searching "Vodka coding environment" works fine. "Vodka coding" also works fine. Both of those show this project in the top results.

Your critique can also be aimed at yahoo, google, amazon, and so on. All of those are irrelevant one word nouns.

Go is probably the worst offender, and yet people just search golang and it works fine.


"Yahoo" is nonsense, I agree; "google" is relevant in the sense that they index a lot of websites; 'amazon' hearkens to the myriad variety of different books they sold.


Yahoo is not nonsense - https://www.merriam-webster.com/dictionary/yahoo

google is nonsense as it's a misspelling of googol


I'm going to pivot. Here's the hierarchy of naming methods from best to worst:

succinct + relevant > relevant > succinct + neologism > neologism > irrelevant existing word


And here I thought "Amazon" referred to all the trees that had to get cut down to make those cardboard boxes they use for shipping... ;)


Google is a brand name, the noun is googol.


It’s a typo, actually. They intended googol and wound up with google.


I think that you might overthinking the titles. If you let go for a moment, often you notice that there's some point to a seemingly random name. In this case I take it as a jest about the influence of hard alcohol on creativity and writing.


Hm. I guess that means the Windows project is doomed. Good to know.


Although in fairness Windows described some of its functionality. Whereas Apple on the other hand...


It's smart to have an irrelevant one-word noun name, it gives you the flexibility to pivot your product over time, without being tied to an overly-specific name.


[flagged]


I'm not sure what you think you're saying, but rephrasing the benefit to include the word "fail" does not make it less beneficial.


I'm saying that choosing a nonsense name for your product with the thought that, should you have to "pivot" (aka failing), you'll be able to keep the name, is brain dead. Besides, this is a programming language; what exactly are you going to "pivot" to?


How do you think progress is made if not by failing and trying again?

and again, and again.... etc.

Of course, you're the "epic" engineer, so I bet you're really good at everything and never fail, right?


Please don't cross into personal attack in Hacker News comments. We're trying for a different sort of conversation here.

https://news.ycombinator.com/newsguidelines.html


Yes my point would have been better taken without that, sorry, his comment rubbed me the wrong way.


I don't think you're completely wrong but, taken to the extreme and applied to all products and companies, your policy would lead to a world where the field of computing would be full of sentences like "Are you using the Jobs-Wozniak Computer Company Web Browser or the Gates Software Corporation Web Browser?".

And that might be a bit much.


I'll admit I don't know how the creator imagines this will be used, but it did suggest an interesting use case to me.

Sometimes text adventure writers will write a full transcript of their game before they code it, but typically there is a large structural and semantic difference between a transcript and a program, so there are some barriers to the translation of transcript -> program. With a tool like this you possibly could remove and/or alter those barriers to enhance the programming process.

I imagine the same method might apply to developing chat bots and the like as well.


There are a few DSLs for this purpose, like Ink [1].

[1]: https://github.com/inkle/ink


There was a suite of software developed for Unix in the late 80s called "The Writer's Workbench", described in Wikipedia as "perhaps the earliest grammar checker to receive wide usage on Unix systems." https://en.wikipedia.org/wiki/Writer's_Workbench

There is another program named "Writers Workbench" which is available as an online version and as a plugin for Microsoft Word. https://www.writersworkbench.com/ It wasn't clear to me whether the "Writer's Workbench" was derived from, or inspired by, the earlier Unix software.


This looks very interesting, but I think you need to give us some more examples of what you can do with it


From the linked wiki about creative coding:

> Creative coding is a type of computer programming in which the goal is to create something expressive instead of something functional.

from the linked page:

> Have you ever wanted to open up the hood of your word processor and tinker with what it's doing? Exploded mode in Vodka is how you do that. Exploded mode shows the guts of your Vodka doc -- the data structures and information that is underlying what you're seeing.

....

> Vodka is a Lisp, but instead of parentheses, it uses boxes.

-----

And maybe I will add, that instead of variables and data-structures, it operates on the prose you are writing. It is definitely hard to explain, but pretty cool nevertheless.


This looks like a text-first coding environment

I like the idea of building websites and writing blog posts by starting with text and slowly taking different parts of it and adding dynamic functionality

Maybe I want to embed the current date somewhere

Maybe I want to embed a chart

It's not exactly a new idea, but doing things with LISP might provide some useful invariants

Hoping I understand this correctly


Crashes with this error when I visit the url:

[$] ./runserver.sh Server running at http://127.0.0.1:3000/ internal/fs/utils.js:230 throw err; ^

Error: ENOENT: no such file or directory, scandir './sounds' at Object.readdirSync (fs.js:887:3) at getAudioFileIncludes (/mnt/DATA/src/vodka/server/webserver.js:104:17) at transformHost (/mnt/DATA/src/vodka/server/webserver.js:117:14) at /mnt/DATA/src/vodka/server/webserver.js:137:12 at FSReqCallback.readFileAfterClose [as oncomplete] (internal/fs/read_file_context.js:63:3) { errno: -2, syscall: 'scandir', code: 'ENOENT', path: './sounds' }


I'm not sure what the point is? Am I coding? Writing a novel?

I can get the first letter of a word? Why do I want to, as a creative writer?


This looks interesting. Someone posted a link to that Hemingway writing app a few days ago, and I remember thinking that might be useful if there was a way to define your own rules.

I could see this possibly being a good way to make "n+7" poems, other Oulipo styled stuff [1].

See example 16: http://www.writing.upenn.edu/bernstein/experiments.html


Should it be more a text result and an underlying text based code (word perfect) And further a notebook like for the underlying (python and R notebook). 2 windows showed next to each other.

Somehow this text is the program Then turn into box ... not sure.


I love the commit messages ...

    > several changes
    > too many changes to list
    > did a bunch of updates to the test framework


I like them too. Seeing commit messages like this makes me feel a bit better about publishing my own repositories (which are invariably full of cursing and commit messages which are not descriptive) without doing significant history edits and rewriting most of it. Having to sanitise everything to conform to the meme of perfect descriptiveness is about 40% of what stops me from doing so in most cases, with another 40% being the name.


When I first read the description I thought it was going to be something like processing[0] but in lisp. Turns out this is something completely different.

[0] https://processing.org/


for all those writers who find that the barrier to leaning programming is all that text editing


Title makes me think of the Ballmer peak: https://xkcd.com/323/


It had to have started there right? But I think this could also be valuable before hitting the peak.

But then again, unraveling a drunkenly produced chunk of LISP doesn't exactly sound fun either.


demo link / video?


This will probably give you some idea. I'm going to set it up give it a go.

https://github.com/eeeeaaii/vodka/blob/main/GETTINGSTARTED.m...


That tells people the things you can do, but not why you might want to do them. I think most people, especially writers, won't know what a creative coding environment is or why it might be right for them.


https://en.wikipedia.org/wiki/Creative_coding

Some things are made to experiment with, simply to play with. They may lead to different projects. I actually tried to get this going but I'm stuck after cloning the repo, there are some folders missing and the node server crashes. If anyone is able to get this running I'd appreciate if they told me how. I'm missing the /sounds folder


There is no explanation of what this is on the page. The one sentence description is meaningless to newcomers.

What is creative coding?

What does it have to do with creative writing?

You need a better explanation / demo.


There's a Getting Started page linked in the README that shows what the software does. Not sure it makes much of a case for it being useful.

https://github.com/eeeeaaii/vodka/blob/main/GETTINGSTARTED.m...


> What is creative coding?

The project's readme links to a wikipedia page that defines the term and provides examples.

"Creative coding is a type of computer programming in which the goal is to create something expressive instead of something functional."

https://en.wikipedia.org/wiki/Creative_coding


That definition irks me a bit because technically the creativity they have done is functional and it just makes me think they're talking about something even stranger.


Vodka is a Lisp, but instead of parentheses, it uses boxes. The yellow boxes around the words you typed before? Those are the equivalent of parentheses in Lisp.

It's a lisp environment! But I agree there should probably be a demo or some kind of interactive example.


Ok, we'll change the URL above, from https://github.com/eeeeaaii/vodka to the intro page.


This looks really interesting! What sort of outputs do you generally use it for?


Uhhh, what problem does this solve?


Not everything has to solve some problem, some things are for art, or love, or because you were bored.


Art solves aesthetic problems, constraints drive creativity.

Love solves the problem of reproduction, competition and evolution.

Boredom solves the problem of creativity, it's the other side of the coin, a kind of destruction at the very least of time. What's the edge of that coin? Maintenance.


...or intoxicated. Hence the name.


There's so many types of stories behind the naming of things, Vodka could be a backronym or a personal story or getting drunk.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: