Hacker News new | past | comments | ask | show | jobs | submit login
Codem Ipsum: Lorem Ipsum but for Code (pomb.us)
89 points by garyng on Nov 15, 2019 | hide | past | favorite | 34 comments

Why code in faux Latin when you can use the real thing: http://users.monash.edu/~damian/papers/HTML/Perligata.html

This is clearly the work of both a madman and a genius

This is so cool! I love it.

I am a Russian speaker, and this ambiguous aspect of English has always bugged me to hell! I think english was a bad model as a starting point for programming languages.

How so?

I'm guessing they're referring to linguistic features that English doesn't have, such as inflected nouns to unambiguously indicate the subject, direct object and indirect objects.

`bite(dog, man)` is ambiguous. You need to look up the function documentation, make a guess, or ask the library developer to come up with a less ambiguous name.

If you could decline your variables, however, you could write (in terrible fake Latin)

`bite(dog, man-um)` or `bite(dog-um, man)` and they would be interpreted as two different -- and unambiguous -- things.

...but I'm just repeating GP's article.

It might just be me, but isn't that just how you name your attributes within the function definition? I don't see how that would help disambiguate without have to look at the function definition at the very least.

The point is it's a new way of looking at arguments (in this toy example). In Latin, the order of the nouns typically does not matter. Their role in the statement is unambiguously determined by their declension.

So if you wrote a library with the verb "bite", you wouldn't specify that the first bites the second, or the first was bitten by the second. Those are ambiguous, because they're you're choice as a developer. Rather, you'd specify that the noun in the subject case bites the noun in the object case. That's unambigious in all declined languages.

So, as a reader of someone else's code, I can see immediately that `bite(boy-um, dog)` -- in my fake Latin where "um" denotes the object (cf. "Puer - Puerum") -- that the boy was bitten by the dog. I don't need to look up any documentation or look at how the variables are named in a third-party library.

Again, of course this case is a toy example. The article is more in-depth.

`bite({from:Dog,to:Man})` solves the ambiguity in my opinion.

I just proposed my team switch to this haha, awesome.

I didn't expect it, but I thought Perligata is more readable than Perl.

At least, apart from numbers, which all are rendered in Roman numerals.

Not a difficult task lol

The name is kind of misleading. I expected it to generate random lines of code, instead of just replacing identifiers with lorem ipsum.

Same thought here. I thought something along the lines of hackertyper. Something that looks like real code, but isn't.

> I thought something along the lines of hackertyper. Something that looks like real code, but isn't.

Hackertyper is absolutely using real code.

Specifically, it's using groups.c from the Linux kernel:


Compare that to the code used by Hackertyper:


For whatever it's worth, I didn't share your expectation. The real lorem ipsum is just a fixed load of text, after all - describing something as "lorem ipsum but for code" shouldn't necessarily imply any functionality.

Given that lorem ipsum is a fixed load of text, as you said, I would have expected a lorem ipsum for code to be a fixed load of code (that's nonsensical but looks real enough from afar).

I thought the same thing.

Hey, I made this. I needed dummy but syntactically valid code to show in demos like this one: https://github.com/pomber/code-surfer/blob/code-surfer-v2/re...

Wait, this is just for dummy code for demos? I've been using at work for our production system. I figured the compiler would catch any mistakes...

Let me know how it goes with the compiler, I've got too much angel capital invested in this by now for it not to work!

As some others in this thread, I feel bamboozled.

What I was hoping for is a "Lorem Ipsum"-style generator for code for like 10 different languages. So you'd have a Lorem Ipsum for JS, C++, Rust, etc.

This is just find/replacing identifiers with lorem ipsum, which doesn't really mask the underlying code that well.

Lorem Ipsum but for javascript

Unfortunately, this doesn’t lorem ipsum code comments.

I also wonder how large such an obfuscated code fragment would need to be to be able to find back the original code on GitHub/GitLab.

The "lorem ipsum" identifier names are foo, bar, baz, qux, quux, etc.

There's even a fancy umbrella term:


No description of what’s happening (on mobile anyway), but it looks like the variables are being replaced?

Identifiers too. It's using the babel.js compiler so the approach is pretty straightforward: https://github.com/pomber/codem-ipsum/blob/master/index.html

I think it should not replace the `length` property of an intentional array.

It looks like dolor is assigned without first being initialized.

No, it's passed in as a parameter with a default value of 1

I see, the two columns are hard to read on mobile.

It keeps throwing me

"SyntaxError: unknown: Unexpected token (1:20)"

on valid code

Where would one use this ?

Applications are open for YC Winter 2022

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