Skip to content

Releases: TodePond/DreamBerd

DreamBerd now supports rich text

13 May 16:12
707047b
Compare
Choose a tag to compare

In this week's weekly update, we have a very exciting update for you. Let's just say, we're... rich to the brim with excitement (ha ha ha ha).

DreamBerd now supports rich text

Have you guessed it yet? Yes, you guessed it! DreamBerd now supports rich text.

const const name = "Lu"!
const const name = "Luke"!

print(name)! // Lu
print(name)! // Luke

Rich text can be helpful when making your website. Use it to add links!

<p>Click here</p>

Bounty update

Here's an update on our affluent and highly successful bounty program. GitHub user mgrkan successfully completed the Β£99 to a charity of your choice if you comment below saying "I miss when dreamberd was just about the programming and not any of this woke rubbish" bounty, and so Β£99 has been donated to UNICEF as requested by them. UNICEF is providing life-saving support to children in Gaza.

See you next week.

Screenshot 2024-05-13 at 17 03 30

Launching the DreamBerd Bounty Program

08 Mar 12:17
7299ea9
Compare
Choose a tag to compare

Last week, we announced the arrival of the world's first DreamBerd interpreter, created by Vivaan Singhvi. As promised, Β£99 was donated to his charity of choice, Second Harvest Food Bank.

But don't worry! There's still one more bounty to claim.

  • Β£99 to a charity of your choice if you create a COMPLETE dreamberd implementation, including implicit strings, automatic insertion, time travel, and everything else.

But don't worry! If that sounds too hard, you might be interested in one of these brand new bounties from our brand new bounty program.

The DreamBerd Bounty Program

  • Β£99 to a charity of your choice if you publish an academic paper that is primarily about dreamberd in a legitimate academic institution.
  • Β£99 to a charity of your choice if you get something primarily about dreamberd to the top of hackernews. You can be the poster, the creator, or both.
  • Β£99 to a charity of your choice if you present an in-person talk primarily about dreamberd to over 99 people.
  • Β£99 to a charity of your choice if you get a dreamberd tattoo.
  • Β£99 to a charity of your choice if you do a read-through of dreamberd to a stream of over 99 people and you actually read the part you're contractually obliged to.
  • Β£99 to a charity of your choice if you write a post primarily about dreamberd on any microblogging platform that gets over 99 likes.
  • Β£99 to a charity of your choice if you are a multi-millionaire and publicly state on camera "when will programmers stop making decisions for our society and just leave us alone also hackernews is a vile website".
  • Β£99 to a charity of your choice if you add gifs to bluesky (not dreamberd related) (I just want it to happen).
  • Β£99 to a charity of your choice if you comment below saying "I miss when dreamberd was just about the programming and not any of this woke rubbish".

Rules

  1. Evidence is required.
  2. No tech bro charities.
  3. First come first served. Once a bounty is completed, it can't be completed by anyone else.
  4. Don't be weird about it. It's just a bit of fun.
  5. Judging may be lenient in the case of near misses, but all judgements are down to my opinion etc.

Thank you and have fun.

Introducing the world's first DreamBerd interpreter

23 Feb 10:43
2d2f361
Compare
Choose a tag to compare

Over the years, many people have tried and failed to implement DreamBerd. No one has been able to do it...

Until today!

Introducing Vivaan Singhvi, a highschool student who has now created the world's first mostly-functional Dreamberd interpreter. This is extremely impressive, as it's a task that many experienced programmers have struggled with.

As promised, I have now donated Β£99 to a charity of Vivaan's choice, Second Harvest Food Bank.

The money will pay for approximately 375 meals for children and families experiencing hunger. I now invite you to donate as well! If you do so, please let me know on social media by tagging @TodePond. I'll give you a boost!

And now I want to show you how well the interpreter fared up with DreamBerd. Here's the analysis.

Implementation report

Exclamation marks

πŸ† Complete pass

All exclamation mark syntax worked well.
Notably, the debug information I got from my question mark was clear and helpful.

print("Hello world")!
print("Hello world")!!!
print("Hello world")?
if (;false) {
   print("Hello world")!
}

Console:

Hello world
Hello world
Hello world

exclamation-marks/bold.db, line 3

  print("Hello world")?
  ^^^^^
Expression evaluates to value undefined.

Hello world

Const const

πŸ† Complete pass

const const name = "Luke"!
print(name)!
Luke

Const var

πŸ… Lenient pass

The pop method from the example didn't work, but constant variables worked as expected with other methods.

const var name = "Lu"!
name.push("ke")!
print(name)!
Luke

Var const

πŸ† Complete pass

var const name = "Luke"!
name = "Lu"!
print(name)!
Lu

Var var

πŸ… Lenient pass

Similar to above, the pop method didn't work, but push worked fine.

var var name = "Luke"!
name = "Lu"!
name.push("ke")!
print(name)!
Luke

Const const const

πŸ’° Untested

For the first bounty, a global "const 3" server is not needed, so I didn't test this.

However, the interpreter does state that it supports const 3!

Unicode naming

πŸ… Buggy pass

The 1️⃣ emoji didn't work, but most other emojis do work.
Notably, the True value was correctly interpreted as a string!

const const letter = 'A'!
var const πŸ‘ = True!
var var 🐦 = 1!

print(letter)!
print(πŸ‘)!
print(🐦)!
A
True
1

Number naming

πŸ† Complete pass

I had to add in some extra whitespace because the interpreter partially implements the parentheses features of DreamBerd, which are not required or tested as part of this first bounty.

const const 5 = 4!
print( 2 + 2 == 5 )!
true

Negative one index arrays

πŸ† Complete pass

const const scores = [3, 2, 5]!
print(scores[-1])!
print(scores[0])!
print(scores[1])!
3
2
5

Float array indexing

πŸ’₯ So close!

This should print [3, 2, 4, 5] instead.

const var scores = [3, 2, 5]!
scores[0.5] = 4!
print(scores)!
[3, 4, 2, 5]

When

πŸ† Complete pass

This was one of the first features I tried. Amazing!

var var health = 10!
when (health == 0) {
   print("You lose")!
}

print("You got hit")!
health = 0!
You got hit
You lose

Line-based lifetimes

πŸ† Complete pass

const const name<2> = "Luke"!
print(name)!
Luke
Error

Time-based lifetimes

πŸ’₯ Failure

This caused an error.

const const name<20s> = "Luke"!
print(name)!

Infinity-based lifetimes

πŸ† Complete pass

I genuinely can't believe this worked. I ran one program that set an infinite-lifetime constant...

const const foreverName<Infinity> = "Luke"!

Then I ran another program to read it and print it out.

print(foreverName)!
Luke

Loops

πŸ† Complete pass

There are no loops.

Booleans

πŸ… Lenient pass

The interpreter is based off a slightly older version of DreamBerd that uses the after keyword instead of addEventListener. I didn't test those older features, but I tested that you can use the maybe boolean value still. The interpreter seems to treat maybe like a string, which is fine I guess.

const const isTuesday = maybe!
print(isTuesday)!
maybe

Significant whitespace

πŸ† Complete pass

Amazing. Love it.

print( 1 + 2*3 )!
print( 1+2 * 3 )!
7
9

Powers

πŸ† Complete pass

print(1^1)!
print(2^3)!
1
8

Number names

πŸ† Complete pass

Incredible.

print( one + two )!
print( thirteen + two )!
3
15

Indentation

πŸ… Lenient pass

The interpreter allows indents of multiples of 3, which is standard practice among DreamBerd implementations. However, it also allows the use of the tabs (in place of two spaces), which is strictly forbidden. I will allow it this once.

function main() => {
   print("DreamBerd is the future")!
}

main()!
DreamBerd is the future

Negative indent:

   function main() => {
print("DreamBerd is the future")!
   }

   main()!
DreamBerd is the future

Loose check

πŸ† Complete pass

print( 3.14 == "3.14" )!
true

Precise check

πŸ† Complete pass

print( 3.14 === "3.14" )!
false

Identity check

πŸ† Complete pass

const const pi = 3.14!
print( pi ==== pi )!
print( 3.14 ==== pi )!
true
false

Lexical check

πŸ’₯ Failure

The interpreter should return true for lexical checks when using four equals signs.

print( 3.14 ==== 3.14 )!
false

Imprecise check

πŸ† Complete pass

print( 3 = 3.14 )!
true 

Functions

πŸ† Complete pass

function add (a, b) => a + b!
func multiply (a, b) => a * b!
fun subtract (a, b) => a - b!
fn divide (a, b) => a / b!
functi power (a, b) => a ^ b!
union inverse (a) => 1/a!

print( add(3, 2) )!
print( multiply(3, 2) )!
print( subtract(3, 2) )!
print( divide(3, 2) )!
print( power(3, 2) )!
print( inverse(3) )!
5
6
1
1.5
9
0.3333333333333333

Dividing by zero

πŸ† Complete pass

print(3/0)!
undefined

String literals

πŸ† Complete pass

Zero-quote strings are not required for this bounty, but the interpreter still supports it in some cases. ie: It works for one-word zero-quote strings.

const const single = 'Lu'!
const const double = "Luke"!
const const triple = '''Lu'''!
const const mixed = "'Lu'"!
const const octuple = """"Luke""""!
const const none = Luke!

print(single)!
print(double)!
print(triple)!
print(mixed)!
print(octuple)!
print(none)!
Lu
Luke
Lu
Lu
Luke
Luke

String interpolation

πŸ… Lenient pass

String interpolation worked, though it incorrectly thought I was in america.

const const name = "world"!
print( "Hello ${name}!" )!
print("Hello Β£{name}!")!
print("Hello Β₯{name}!")!
print("Hello {name}€!")!
Hello world!
Hello Β£{name}!
Hello Β₯{name}!
Hello {name}€!

Types

πŸ† Complete success

Types get stripped and ignored.

const var age: Int = 28!
const var score: Int9 = 10!

print(age)!
print(score)!
28
10

Regular expression types

πŸ… Lenient pass

Many regular expressions work, but the long crazy one in the example causes an error.

const const name: /[a-zA-Z]+/ = "Luke"!
print name!
Luke

Previous

πŸ… Lenient pass

It didn't work with the ++ operator, but it worked when I wrote it out like this.

var var score = 5!
score = score + 1!
print(score)!
print(previous score)!
6
5

Next

πŸ’° Untested

I couldn't figure out how to test this one, because I noticed that the DreamBerd example in the docs used old features that aren't supported anymore.

Current

πŸ† Complete pass

var var score = 5!
print(current score)!
5

File structure

πŸ† Complete pass

const const score = 5!
print(score)!

=====================

const const score = 3!
print(score)!

File names

πŸ† Complete pass

======= add.db =======
function add(a, b) => {
   return a + b!
}

print( add(1, 2) )!
3

Exporting

πŸ† Complete pass

===== add.db ==
function add(a, b) => {
   return a + b!
}

export add to "main.db"!

===== main.db ==
import add!
print( add(3, 2) )!

Single instance classes

πŸ† Complete pass

class Player {
   const var health = 10!
}

const var player1 = new Player()!
const var player2 = new Player()!
Error: Already made instance of the class "Token(TokenType.NAME, 'Player')".

Factory classes

πŸ† Complete pass

var var count = 0!

class PlayerMaker {
   function makePlayer() => {
      count = count + 1!
      class Player {
         const var health = 10!
         const var id = count!
      }
      const const player = new ...
Read more

Introducing the DreamBerd Vision Pro

11 Feb 18:39
Compare
Choose a tag to compare

Today we're proud to announce the DreamBerd Vision Pro.

It's not AR or VR. It's spatial computing. And Lu Wilson has done a FULL COMPREHENSIVE VIDEO REVIEW that's completely unbiased and unsponsored.

Check it out here.

This is an arrow

16 Jan 15:51
a2dd3e0
Compare
Choose a tag to compare

This is an arrow!
It might not look like it.
Because it's a weekly DreamBerd update.

This week, there's a new video - made by Berd of DreamBerd.

Here it is!

Thank you for reading this week's release notes.

DreamBerd has been renamed to DreamBerd - e/acc

20 Dec 18:54
cd91aa5
Compare
Choose a tag to compare

Welcome back to the weekly DreamBerd release notes. We've got some incredible news for you this week. I can't wait to get started.

Let's dive in to all the new changes, which include a whole load of features, fixes, and balance changes.

But first... We have an exciting new announcement to announce:

DreamBerd is now officially part of the EA movement.

EA

No, not EA games. Effective Altruism is a sick new club for intellects like yourself. And DreamBerd is now part of it!

Join us! Join the team!

Get in now! While you still can! Before it's too late! We're gonna be rich!

e/acc

No, forget about that ... that decel ... that decel movement. The brand new e/acc club is where it's at!

DreamBerd is no longer part of the EA movement. DreamBerd is now officially part of the e/acc movement.

Join us. Stick it in your twitter name! Declare allegiance to the boys!

Get in now! While you still can! Before it's too late! We're gonna be rich!!

oss/acc

No no no, scrap that. There's a brand new club for all the open boys ... the open men ... out there.

DreamBerd is no longer part of the e/acc movement. DreamBerd is now officially part of the oss/acc movement.

Join us! Get in now! While you still can! Before it's too late!

We're ready for you.

Come home.

d/acc

How about heck no! Me and my boys, well, heh, we're all about spreading the cool around.

We're the badassest boys in town.

DreamBerd is no longer part of the ... part of the oss/acc movement. DreamBerd is now officially part of the-

evm/acc

Hey hey hey now why don't you WAIT a MINUTE.

just cos NFT's flopped it doesn't mean we can't have another g-

we/acc

We are the best boys because we are we and we-

x/acc

All praise Elon Musk. All praise Elon Musk. All praise Elon-

∞/acc

Accelerate eeeeeeeeeeeeeveryyyyyyyyyyyyyythiiiiii-

Vrooooooooooooooom like a carrrr-

e/e/acc/acc

The only thing we care about at the DreamBerd Foundation is being one of the boys. We are finally... we are finally...

acc/acc/acc

Us boys, we're just..

Us men, we're just... makers of our own fate, in control, in charge, in power, in-

in/acc

All I ever wanted- I swear all I ever wanted was-


We hope you enjoyed this week's release notes. As always, we're always happy to hear your feedback about these changes. Make sure you follow us on twitter and join our discord community for all the latest updates. And if you find any bugs, don't hesitate to let us know on our bug report contact form. Duh, we're hiring. If you have what it takes, submit your application.

Discuss this post on hackernews.

And if you want to get started with DreamBerd, please feel free to jump into our examples.

nDreamBerd Contributors Hall Of Fame

14 Dec 08:48
37968ba
Compare
Choose a tag to compare

Welcome back to another weekly release notes for DreamBerd... uh... I mean nDreamBerd.

We're very excited to today announce the nDreamBerd Contributions Hall Of Fame.

The Hall Of Fame is a place where we list out and celebrate everyone who's had a pull request accepted to nDreamBerd.

Adding Yourself

To add yourself to the Hall Of Fame, please submit a pull request adding your name.

Please Note: The Hall Of Fame is only for people who have had a pull request accepted.

Please Also Note: Adding your name to the Hall Of Fame can be your first pull request that gets accepted.

DreamBerd vHas vBeen vRenamed cTo nDreamBerd

25 Nov 11:22
acd8f3d
Compare
Choose a tag to compare

vWelcome cTo adjAnother adjWeekly nDreamBerd nRelease nNotes.

adjNew nName

aFirst, pWe'vRe qReally adjPleased cTo vAnnounce nDreamberd's adjNew nName: nDreamBerd.

pWe vPromise pWe vWon't vChange pIt advAgain.

adjSemantic nNaming

pWe'vRe qAlso adjExcited cTo vIntroduce aA qBrand adjNew nFeature. pWe vCall pIt adjSemantic vNaming, cOr adjHungarian nNotation.

advNow pIt's adjEasier cTo vRead nDreamberd cThan advEver nBefore.

const const sName = "Lu"!
const const iAge = 29!
const const bHappy = true!

pWe qEven vSupport g_nGlobals.

const const g_fScore = 4.5!

pWe vLook advForward cTo vSeeing vYou cFor adjNext nWeek's nRelease nNotes.

DreamBerd is back

16 Nov 23:36
9cffca5
Compare
Choose a tag to compare

Recently, we ran out of money.

However, I just realised that I counted our investments wrong. User Joshix didn't just donate 69 cents. They donated 69 euros!

DreamBerd is saved!

Our new drive into academia

Since conquering hacker news (a vile website), we've set our sites on a new target: Academia.

It is our goal to get DreamBerd mentioned in as many academic papers and conferences as possible. If you work in academia, or you know someone who does, mention DreamBerd!

The current list of DreamBerd appearances is as follows:

Due to the slow place of academia, we don't expect this list to grow any time soon.

Influencers

No, we're not interested in any influencers covering Dreamberd (unless you work in academia).

But if you really insist on covering it... You must cover the contributing section in your coverage. We've added a note to our docs to cover this.

If you notice an influencer or content-creator cover DreamBerd without mentioning it, please let them know in their chat and comments!


Thank you for tuning into this week's release notes. See you next week.

The Real Truth About DreamBerd

08 Nov 10:23
Compare
Choose a tag to compare

Last week, we revealed the truth about DreamBerd:

DreamBerd's true purpose is to make fun of JavaScript. Just look at this abomination:

typeof NaN === "number"

Yeah, you read that right. JavaScript thinks that 'not a number' is a 'number'. You probably didn't know this.

That's the kind of high level satire you can expect from DreamBerd.

Except... That's not the truth. Here's the real truth:

The Real Truth About DreamBerd

DreamBerd's true purpose is to make fun of people who make fun of JavaScript. Just look at this abomination:

Just look at this abomination.

typeof NaN === "number"

Yeah, you read that right. JavaScript thinks that 'not a number' is a 'number'. You probably didn't know this.

Yeah, you read that right. They think that 'not a number' is 'not a number'. But 'not a number' is a 'number' as part of the IEFFFF spec. You probably didn't know this.

That's the kind of high level satire you can expect from DreamBerd.

Except... That's not the truth. Here's the real truth:

The Real Truth About DreamBerd

DreamBerd's true purpose is to make fun of people who make fun of people who make fun of JavaScript. Just look at this abomination:

Just look at this abomination:

Just look at this abomination.

typeof NaN === "number"

Yeah, you read that right. JavaScript thinks that 'not a number' is a 'number'. You probably didn't know this.

Yeah, you read that right. They think that 'not a number' is 'not a number'. But 'not a number' is a 'number' as part of the IEFFFF spec. You probably didn't know this.

Yeah, you read that right. They think that 'not a number' is a 'number'. But if you look closely at the name of 'not a number', you'll notice that it says 'not a number', not 'a number'. You probably didn't know this.

That's the kind of high level satire you can expect from DreamBerd.

Except... That's not the truth. Here's the real truth:

The Real Truth About DreamBerd

DreamBerd's true purpose is to make fun of people who make fun of people who make fun of people who make fun JavaScript. Just look at this abomination:

Just look at this abomination:

Just look at this abomination:

Just look at this abomination.

typeof NaN === "number"

Yeah, you read that right. JavaScript thinks that 'not a number' is a 'number'. You probably didn't know this.

Yeah, you read that right. They think that 'not a number' is 'not a number'. But 'not a number' is a 'number' as part of the IEFFFF spec. You probably didn't know this.

Yeah, you read that right. They think that 'not a number' is a 'number'. But if you look closely at the name of 'not a number', you'll notice that it says 'not a number', not 'a number'. You probably didn't know this.

Yeah, you read that right. They think that 'not a number' is 'not a number' as if any of this matters. When push comes to shove, our reality has no meaning, and there's no point in arguing about anything. You probably didn't know that.

That's the kind of high level satire you can expect from DreamBerd.

Except... That's not the truth. Here's the real truth:

The Real Truth About DreamBerd

DreamBerd's true purpose is to make fun of people who make fun of people who make fun of people who make fun of people who make fun of JavaScript. Just look at this abomination:

Just look at this abomination:

Just look at this abomination:

Just look at this abomination:

Just look at this abomination.

typeof NaN === "number"

Yeah, you read that right. JavaScript thinks that 'not a number' is a 'number'. You probably didn't know this.

Yeah, you read that right. They think that 'not a number' is 'not a number'. But 'not a number' is a 'number' as part of the IEFFFF spec. You probably didn't know this.

Yeah, you read that right. They think that 'not a number' is a 'number'. But if you look closely at the name of 'not a number', you'll notice that it says 'not a number', not 'a number'. You probably didn't know this.

Yeah, you read that right. They think that 'not a number' is 'not a number' as if any of this matters. When push comes to shove, our reality has no meaning, and there's no point in arguing about anything. You probably didn't know that.

Yeah, you read that right. They think that nothing matters. But they could just go outside and touch grass. If they went to the gym, or created a child as soon as possible, they'd find meaning in their life. You probably didn't know this.

That's the kind of high level satire you can expect from DreamBerd.

Except... That's not the truth. Here's the real truth:

The Real Truth About DreamBerd

DreamBerd's true purpose is to make fun of people who make fun of people who make fun of people who make fun of people who make fun of people who make fun of JavaScript. Just look at this abomination:

Just look at this abomination:

Just look at this abomination:

Just look at this abomination:

Just look at this abomination:

Just look at this abomination.

typeof NaN === "number"

Yeah, you read that right. JavaScript thinks that 'not a number' is a 'number'. You probably didn't know this.

Yeah, you read that right. They think that 'not a number' is 'not a number'. But 'not a number' is a 'number' as part of the IEFFFF spec. You probably didn't know this.

Yeah, you read that right. They think that 'not a number' is a 'number'. But if you look closely at the name of 'not a number', you'll notice that it says 'not a number', not 'a number'. You probably didn't know this.

Yeah, you read that right. They think that 'not a number' is 'not a number' as if any of this matters. When push comes to shove, our reality has no meaning, and there's no point in arguing about anything. You probably didn't know that.

Yeah, you read that right. They think that nothing matters. But they could just go outside and touch grass. If they went to the gym, or created a child as soon as possible, they'd find meaning in their life. You probably didn't know this.

Yeah, you read that right. They're trying to make out that they're not a nerd like everyone else reading this. (Also getting weird vibes from that child comment). Really, they shouldn't have kids. They should stay single, live in the dark, and work overtime all day to make their startup a success. Too many people don't want to work nowadays. You probably didn't know this.

That's the kind of high level satire you can expect from DreamBerd.

Except... That's not the truth. Here's the real truth:

The Real Truth About DreamBerd

DreamBerd's true purpose is to make fun of everyone. Just look at this abomination:

Just look at this abomination:

Just look at this abomination:

Just look at this abomination:

Just look at this abomination:

Just look at this abomination:

Just look at this abomination.

typeof NaN === "number"

Yeah, you read that right. JavaScript thinks that 'not a number' is a 'number'. You probably didn't know this.

Yeah, you read that right. They think that 'not a number' is 'not a number'. But 'not a number' is a 'number' as part of the IEFFFF spec. You probably didn't know this.

Yeah, you read that right. They think that 'not a number' is a 'number'. But if you look closely at the name of 'not a number', you'll notice that it says 'not a number', not 'a number'. You probably didn't know this.

Yeah, you read that right. They think that 'not a number' is 'not a number' as if any of this matters. When push comes to shove, our reality has no meaning, and there's no point in arguing about anything. You probably didn't know that.

Yeah, you read that right. They think that nothing matters. But they could just go outside and touch grass. If they went to the gym, or created a child as soon as possible, they'd find meaning in their life. You probably didn't know this.

Yeah, you read that right. They're trying to make out that they're not a nerd like everyone else reading this. (Also getting weird vibes from that child comment). Really, they shouldn't have kids. They should stay single, live in the dark, and work overtime all day to make their startup a success. Too many people don't want to work nowadays. You probably didn't know this.

Yeah, you read that right. Both sides are as bad as each other. But not me. I'm above all that. You probably didn't know this.

That's the kind of high level satire you can expect from DreamBerd.

Except... That's not the truth. Here's the real truth:

The Real Truth About DreamBerd

DreamBerd's true purpose is to make fun of people who make fun of everyone. Just look at this abomination:

Just look at this abomination:

Just look at this abomination:

Just look at this abomination:

Just look at this abomination:

Just look at this abomination:

Just look at this abomination:

Just look at this abomination.

typeof NaN === "number"

Yeah, you read that right. JavaScript thinks that 'not a number' is a 'number'. You probably didn't know this.

Yeah, you read that right. They think that 'not a number' is 'not a number'. But 'not a number' is a 'number' as part of the IEFFFF spec. You probably didn't know this.

Yeah, ...

Read more