JavaScript-mancy

Let JavaScript Be Your Next Adventure!

Are you a C# or Java developer curious about the awesome things happening in the JavaScript world? Would you like to be a part of it? Build super rich web applications, mobile apps, backend services or even robots? Does JavaScript frustrate you? Would you like to master it and never again feel like you cannot make the language do what you want?

Are you a fan of the Fantasy genre? A sucker for wizards, elf-bowmen, powerful sorceresses and evil trolls? Love the works of Brandon Sanderson, G.R.R. Martin or Tolkien? Did you enjoy the Lord of the Rings or Game of Thrones?

Then this is the place for you! The JavaScript-mancy series are a collection of beautifully written JavaScript books that are a blast to read. Learn the basics of JavaScript, OOP, Functional Programming, async, ES6, TypeScript, tooling, testing, Angular 2 and more!

Tell me More!

And there's wizards!

Tell me more!!

The JavaScript-mancy series is the lovechild of three of my passions: JavaScript, writing and Fantasy. In the pages of each one of the books of the series you'll find a breadth of JavaScript knowledge, delivered with a humorous and casual style of writing and sprinkled with Fantasy at every turn.

In summary, you'll get:

JavaScript

Learn JavaScript and ESnext like never before. With a great balance between pragmatism and detailed explanations and with an informal and fun writing style that is easy to follow along.

Tons of Samples

With a humongous amount of examples and exercises that illustrate every concept in practice. So you can learn using the best methodology possible: learn by doing.

C# and Java Inspired

Learn JavaScript from a C# perspective built on top of analogies and similarities between the two languages. Perfect if you have a C#, Java or statically typed background.

Epic Fantasy

Every book has a story of epic fantasy interweaved in the code samples. Read the books, complete the exercises, Save the world! :)

Tell Me Even More!

Craft Spells!

pixel art character Mooleen holding a fireball
function obliterate(...victims){
  victims.forEach(function(victim){
      console.log(`${victim} wiped out of the face of the earth`);
  });
  console.log('*Everything* has been obliterated, ' + 
              'oh great master of evil and deceit!');
}

Summon An Army!

pixel art character dark knight holding an axe
let wizard = new Wizard('Randalf, the Red', /* hp */ 10);
wizard.castsSpell(lightningSpell, orc);
// => Randalf, the Red casts lightning spell on orc
// => A bolt of lightning electrocutes orc(-10hp)

let thief = new Thief('Locke Lamora', /* hp */ 100);
thief.steals('orc', /*item*/ 'gold coin');
// => Locke Lamora steals gold coin from orc
    
More!! I Want More!

Become a Hero!

pixel art character Mooleen pixel art character Red pixel art character randalf pixel character zandalf
/*

Mooleen sits in a dark corner of a tavern sipping a jug of the local brew.
She flinches. The local brew must surely have fire wyvern blood in it.
She silently observes the villagers around her.
They seem unhappy and nervous, as if they were expecting something terrible
was about to befall them at any second.

*/

mooleen.says("A month has passed since we dispatched Great");
mooleen.says("You would think they would be happier");

rat.says("Well, people don't like change or surprises");
rat.says("They're expecting that someone worse will take control");
rat.says("Better the devil you know...");

/*
A maid stops by Mooleen's table confused
*/
maid.says("Are you feeling ok sir? Speaking to yourself?");

rat.moves("out of the shadows");
maid.shrikes();

villager.shouts("A demon!!!");

rat.says("Great");
mooleen.says("That's just plain mean");

/*
The villagers quickly surround the dark corner with clubs, bottles and
whichever crude weapon they can muster.
*/
villager.shouts("Kill the demon!!");

mooleen.weaves("teleport('Caves of Infinity')");

/* 
Mooleen and rat blink out of existence just as various pointy weapons
blink into existence precisely where they were sitting a second
earlier.
*/

randalf.says("There you are!");
mooleen.says("here I am!");
rat.says("A demon!?");

randalf.exclaims("A demon? Where!!");
bandalf.says("Yes where!")
zandalf.looksWorriedAllAround();

mooleen.says("There's no demon");
randalf.asks("Are you sure?");

randalf.says("We need to be on our toes");
mooleen.asks("You too?");

randalf.says("Yes, it's been a month, they must be about to attack");
mooleen.says("They? Who!");

randalf.says("Could be anyone really... the dark brootherhood, the clan " + 
 "the silver guild, the red hand... They'll want to control Asturi");
randalf.says("You need to summon an army");

mooleen.says("An army?");
randalf.says("An army indeed, and bigger than the one before...");

mooleen.says("Really? Cause that took a looooong time to summon");
randalf.says("Well, That's because you're a novice");

mooleen.says("That's encouraging");
randalf.says("Oh, don't you worry, we'll take care of your ignorance");
mooleen.says("Ouch");

randalf.says("Let me tell you about OOP in JavaScript");

// ... adventure awaits you!!!
What People Are Saying...

What People Are Saying

Get The Books

Get the Books!

Who's the Author?

Who's the author?

Jaime González García (@vintharas)

Full Stack Web Developer, Author and Speaker

Jaime is a full stack web developer and UX designer who thinks it's weird to write about himself in the third person. During the past few years of his career he has been slowly but surely specializing in front-end development and user experience, and somewhere and some time along the way he fell in love with JavaScript. He still enjoys developing in the full stack though, bringing ideas to life, building things from nothingness, beautiful things that are a pleasure and a delight to use.

Jaime works as a Technical Solutions Consultant at Google helping publishers be great. He spends part of his time as a Developer Relations for Angular and Google in the Nordics developer community. He speaks at conferences, writes articles, runs workshops and talks to developers and companies about how they can do cool things with Angular and JavaScript. He also arranges developer community events at the Google Office in Stockholm as a way to support and encourage the thriving local dev ecosystem and put it in contact with other Googlers.

In his spare time he builds his own products and blogs at barbarianmeetscoding.com (long story that one). He loves spending time with his beloved wife Malin and son Teo, drawing, writing, reading fantasy and sci-fi, and lifting heavy weights

Why JavaScript-mancy?

Why JavaScript-mancy?

photos of the javascriptmancy book

Writing code is one of my favorite past times and so is reading fantasy books. For this project I wanted to mix these two passions of mine and try to make something awesome out of it.

In fantasy we usually have the idea of magic, usually very powerful, very obscure and only at the reach of a few dedicated individuals. There’s also different schools or types of magic, pyromancy deals with fire magic, allomancy relates to magic triggered by metals, necromancy is all about death magic, raising armies of skeletons and zombies, immortality, etc.

I thought that drawing a parallel between magic and what we programmers do daily would be perfect. Because it is obscure to the untrained mind and requires a lot of work and study to get into, and because we have the power to create things out of nothing.

And therefore, JavaScript-mancy, the arcane art of writing awesome JavaScript.

Get me Outa Here!