Nikola Brežnjak blog - Tackling software development with a dose of humor
  • Home
  • Daily Thoughts
  • Ionic
  • Stack Overflow
  • Books
  • About me
Home
Daily Thoughts
Ionic
Stack Overflow
Books
About me
  • Home
  • Daily Thoughts
  • Ionic
  • Stack Overflow
  • Books
  • About me
Nikola Brežnjak blog - Tackling software development with a dose of humor
Quick tips

Customize Console 2 on Windows machine

If you’re using Console 2, and I don’t know why you wouldn’t want to btw, you probably wanted to customize it. Here is an excellent post by Scott Hanselman on how to do it:http://www.hanselman.com/blog/Console2ABetterWindowsCommandPrompt.aspx.

To change settings you have to right-click in the main console and click Edit | Settings.

The settings that I have used from his blog are:

  • I’ve set Desktop as my startup directory under Console – Startup Directory
  • I hid the menu, status bar and toolbar under Appearance | More
  • I’ve set the font to Consolas, but font only 12, as 15 (as he suggests) looks way too big on my screen. No experimentation with matrix colors or transparency.
  • I’ve set the option so that when I select with the mouse the selection gets coppied into the clipboard by selecting “Copy on Select” under Behavior
  • Hotkeys, changed the New Tab 1 hotkey to Ctrl-T
  • Hotkeys, changed Paste to Ctrl-V
  • Do not use Ctrl-C as Copy Selection or you will not be able to break some command that keeps running after you run it (like grunt for example). And besides if you used my settings then you already have a “Copy on Select” option set. More info here: http://sourceforge.net/p/console/bugs/401/

edit (18.3.2014): So, it turned out I wanted to be matrix cool :), so I went to change the color of the font, but to no avail. Finally I figured out that actually the grey color needed to be changed to green and not white as I was doing. Here’s an image to make thing clearer:
console2_color

Quick tips

Git push origin master could not read username for http://github.com

If you clone your project on another computer and try to do:

git push origin master

and you get and error like:

fatal: could not read Username for ‘https://github.com’: No such file or directory

then you can solve this by executing the following command:

git remote set-url origin [email protected]:username/repo.git

where, of course,username  and repo  depend on your settings.

For more info, check this StackOverflow question.

 

Books

The Wise Man’s Fear – Patrick Rothfuss

My favorite quotes from the book The Wise Man’s Fear by Patrick Rothfuss:

I don’t care what they talk, I care what they say.

There was an art to choosing your projects in fishery. It didn’t matter if you made the brightest sympathy lamp or the most efficient heat funnel in the history of artificing until someone bought it you wouldn’t make a bent penny of commission.

Most things fail with the age. Our hands and basks stiffen, our eyes dim, skin roghens and our beauty fades. The only exception is the voice. Properly cared for a voice does nothing but grow sweeter with age and constant use.

We love what we love. So, yes, it had flaws, so what does that had to matter when it comes to the matters of the heart. We love what to love. Reason does not enter into it. In many ways unwise love is the truest love. Anyone can love a thing ‘because’. That’s as easy as putting a penny in your pocket. But to love something ‘despite’, to know the flaws, and love them too. That is rare end pure and perfect.

Why Auri? Because she doesn’t have anyone else, and neither do I. If we don’t look out for each other – who will?

The desire for a knowledge shapes the mind

The second was some rather bad poetry, but it was short and I forced my way through gritting my teeth and occasionally closing one eye, so it is not to damage the entirety of my brain.

If we didn’t have impressive sounding names no one would take us seriously.

You’d be amazed how similar arrogance and confidence look at first glance. And he was generous and rich – which is a nice combination.

Clothes do not make a man, but you need a proper costume if you want to play the part.

They were the best sort of friends. The sort everyone hopes for but no one deserves.

When you’re around it’s easy to forget all the bad parts of my life – who I am – it’s nice to take a vacation from myself every once in a while. You’re my safe harbor in an endless stormy sea. You’re my shady willow on a sunny day. You’re sweet music in a distant room. You’re unexpected cake on a rainy day. You’re my bright penny on the roadside, you are worth more than the moon on the long night walk. You are sweet wine in my mouth, a song in my throat and laughter in my heart. You’re too good for me. You are a luxury I cannot afford. Despite this I insist you come with me today, I will buy you dinner and spend hours waxing rhapsodic landscape of wonder that is you.

Lord woman, if I had tits like yours I’d own half the world by now.

Poetry is a song without music. The song without music is like a body without soul.

Too much looking can get in the way of seeing.

The world needs people like you. You get things done. Not always the best or most sensible way but it gets done. You’re a rare creature. You know exactly what to do. You don’t hesitate – you just see and react.

That’s another problem with power. If you possess too much people don’t date point out your mistakes.

I’ll need to know more about her. Trying to court a woman without knowing her would be worse than foolish.

History tends to be rather dry, but everyone enjoys story.

It’s hard to long for something that is always there. Absence feeds affection.

A secret of the mouth is like a stone in a boot. At first you’re barely aware of it, then grows irritating, then intolerable. Secrets of the mouth grow larger the longer you keep them swelling until they press against your lips. They fight to be let free. Secrets of the heart are different. They are private and painful and we want nothing more than to hide them from the world. They do not swell or press against the mouth, they live in the heart and a longer they are kept the heavier they become. He complains that it’s better to have a mouthful of poison than the secret of a heart. Any fool will spit out poison, but we support these painful treasures. We swallow hard against them every day, forcing them deep inside us. There they sit, growing heavier – given the time they cannot help but crush the heart that holds them.

Nothing in the world is harder than convincing someone of an unfamiliar truth.

Only a fool worries over what he can’t control

Half of seeming clever is keeping your mouth shut at the right times.

Boys are always wearing beards hoping it will make them men.

Leader is not the muscle leader is a mind.

I learned more from a month on the road then I had in three years of classes. No man is brave that has never walked a hundred miles. If you want to know the truth of who you are walk until not a person knows your name. Travel is the great leveler, a great teacher. Bitter as medicine, cruder than glass. Long stretch of road will teach you more about yourself than 100 years of quiet introspective.

But sometimes the best help a person can find is helping someone else.

If a leg goes bad you need to cut it off, and some folks need killing.

They did important things. They made hard choices that no one else was willing to do. That sort of thing frightens people.

It’s one thing to enjoy story but it’s quite another to take it for the truth.

NodeJS

Can’t install gulp.js or update npm past version 1.2.32

My problem started with not being able to install gulp. I checked my npm version (npm –version ) and saw I have version 1.2.32 whilst the time of this writing the newest version was 1.4.3. After countless trying of commands like

npm cache clean
npm update -g npm
npm update
npm install gulp -g

and reinstalling Node.js from official site I realized that even though I removed my Node.js installation from C:\Program Files\nodejs  I still had it in C:\Program Files (x86). Doh! :/ So, after I removed both installations, I redownloaded the exe file from Nodejs.org and installed to C:\nodejs. After this, when I ran npm install gulp everything went well. However, when I tried to install it globally (npm install gulp -g ) I got:

npm ERR! peerinvalid The package generator-karma does not satisfy its siblings' peerDependencies requirements!
npm ERR! peerinvalid Peer [email protected] wants generator-karma@~0.6.0
npm ERR! peerinvalid Peer [email protected] wants generator-karma@>=0.6.0

npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\nodejs\\\\node.exe" "C:\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "gulp-util" "-g"
npm ERR! cwd C:\Users\Nikola\Desktop\skeleton
npm ERR! node -v v0.10.26
npm ERR! npm -v 1.4.3
npm ERR! code EPEERINVALID
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     C:\Users\Nikola\Desktop\skeleton\npm-debug.log
npm ERR! not ok code 0

Then I uninstalled npm uninstall -g generator-karma and npm uninstall -g generator-angular , and gulp installed fine.

 

Heroku, NodeJS, Windows

Getting Started with Node.js on Heroku on a Windows machine

Heroku is a cloud platform as a service supporting several programming languages which lets app developers spend their time on their application code, not managing servers, deployment, ongoing operations, or scaling…

If you tried to get your feet wet with Heroku by deploying Node.js application, you must have come across this article on Heroku’s documentation (and you also may have run into problems when starting Foreman if you’re on a Windows machine – read onward to see how I’ve solved it).

Obviously, first you have to make an account on Heroku, then install Heroku toolbelt (it gives you git, foreman, and heroku command line interface) for your environment (in my case Windows):
herokuToolbelt

Fire up your command prompt (I use Console2) and run heroku login . You need to have Node.js installed (in case you don’t you can download it here).

Write some Node.js app and put it in app.js file:

//app.js
var express = require("express");
var app = express();

app.get('/', function(req, res) {
  res.send('Every day in every way I\'m serving more requests');
});

var port = Number(process.env.PORT || 5000);
app.listen(port, function() {
  console.log("Listening on " + port);
});

If you have  package.json  file then Heroku will recognize your app as Node.js app. In order to create it, run npm init  in the root directory of your app. The npm init utility will walk you through creating a package.json file by asking few questions. If you already made your repository on GitHub and cloned it locally then npm init command in this folder will recognize that too and add:

"repository": {
    "type": "git",
    "url": "https://github.com/yourUsername/appName.git"
}

If you wish, you can freely clone my test app from Github: https://github.com/Hitman666/herokuTestApp.git

Next, install dependencies from your code (in app.js  example the required module is express). Use npm install <pkg> –save  to install a package and save it as a dependency in the package.json file. In my example that would be one command:

npm install express --save

 

You have to set a Procfile, which is a text file in the root directory of your application, to explicitly declare what command should be executed to start a web dyno. In our case this would be the contents of Procfile:

web: node app.js

Now you should be able to start your application locally using Foreman (installed as part of the Heroku Toolbelt) by running foreman start .

But here the party started :/

In my case foreman didn’t start at all, and after a lot of searching, I managed to solve it in few steps. First, I updated my Ruby installation:

gem update --system --source http://rubygems.org/

Then, according to this StackOverflow post I installed former version of foreman:

gem uninstall foreman
gem install foreman -v 0.61

Finally, I added Ruby’s bin folder (Ruby which, in my case, is in C:\Program Files (x86)\Heroku\ruby-1.9.2\bin) to my PATH variable.

Ok, almost there! Lets add our app to git (you should skip the git init command if you already cloned your app from GitHub):

git init
git add .
git commit -m "init"

and finally, lets deploy it to Heroku:

heroku create
git push heroku master

To open the app in your browser run heroku open . To push the changes to GitHub you have to execute git push origin master.

*Now that your app is up and running on heroku (my link) you may want to prevent it from going to sleep mode. Some suggestions on how to achieve this are in this post on StackOverflow (I went with UptimeRobot).

**At some point, as I was fiddling with the apps on Heroku’s website, I deleted all apps and then the git push heroku master  command from my console was not working anymore, so I had to do:

git remote rm heroku
heroku create
git push heroku master

***Also, I wanted to rename my app and that can be done easily:

heroku apps:rename NEWNAME

 

NodeJS, Quick tips

How to use nodemon

Nodemon is a utility that will monitor for any changes in your source and automatically restart your server. Perfect for development. Install it using npm.

npm install -g nodemon

Once installed, instead of node app.js  use nodemon app.js . It will save you a lot of time in the long run, because you won’t need to manually restart the server each time you make a change.

edit: These days I’m using a ever so slightly more popular PM2.

Books

The name of the wind – Patrick Rothfuss

My favourite quotes and notes from the book The name of the wind by Patrick Rothfuss:
Though this genre is not my favorite, this book made me reconsider, as I was so drawn into the story and characters as if I were like there. Usually with fantasy I don’t like the alienation from “human capabilities”, but here in this book surprisingly so – I don’t care if he (Qvothe) is so “almighty”. Maybe it could be with the narration technique as yo u know he is not (anymore) so “almighty” but you wanna know why!? All in all, I would recommend this book series to anyone – even those (like me) who don’t fancy this genre too much – you will be surprised. And now, the qvothes (pun intended ;)):
We are more than the parts that form us.

 

No matter where she stood she was in the centre of the room. Do not misunderstand, she was not loud or vain. We stare at the fire because it flickers, because it glows. The light is what catches our eyes but what makes a man lean close to the fire has nothing to do with its bright shape. What draws you to a fire is a warmth you feel when you come near. The same is true of Denna.

 

All snakes bite, I don’t need their names to know they’re dangerous.

 

Call a Jack Jack, call a spade a spade. But always call a whore a lady. Their lives are hard enough, and it never hurts to be polite.

 

She taught me I should never do anything in private that I didn’t want talked about in public.

 

The day we fret about the future is the day will leave our childhood behind.

 

To truly understand what it was like you must realize that nothing is so grand as true showing off for one another. Good entertainers try to make each performance special, but you need to remember that the show they’re putting on for you is the same one they’re putting for hundreds of other audiences.

 

Bones mend, regret stays with you forever.

 

Asking to hold musicians instrument is like asking a man to kiss his wife.

 

Anger can keep you warm at night, and wounded pride can spur a man to my wondrous things.

 

There are two sure ways to lose friends to lose a friend; one is to borrow the other to lend.

 

She had a wonderful collection of gently moving curves.

 

If you’re lucky enough to find a way of life you want, you have to find the courage to live it.
Quick tips, Sublime Text, Windows

How to use JSHint in Sublime Text on Windows machine

Since this is in the “quick tips” category I won’t go into what Sublime Text is, or why using JSHint is recommended, and that for it’s installation you need Node.js, I will just state the shortest possible path in how to install it, as I had some problems in doing this in a timely fashion:

//install jshint via npm
npm install jshint -g

In Sublime Text install JSHint Gutter via package manager.

And now, finally, since I’m on a windows machine, the problem was that once I got all this installed I had to set the Node.js path in JSHint Gutter plugin but with setting the absolute path to node.exe by using forward slashes:

{
  // Simply using `node` without specifying a path sometimes doesn't work :(
  // https://github.com/victorporof/Sublime-JSHint#oh-noez-command-not-found
  // http://nodejs.org/#download
  "node_path": "C:/Program Files/nodejs/",

  // Automatically lint on edit (Sublime Text 3 only).
  "lint_on_edit": false,

  // Automatically lint when a file is saved.
  "lint_on_save": true,

  // Highlight problematic regions when selected.
  "highlight_selected_regions": false
}
CodeSchool, NodeJS

How to get started with Node.js

Recently I started using CodeSchool to explore new languages/technologies in the web world, and I will post every Tuesday something new that I learn. So far, all I have for them is pure praise, so if you fancy learning something new go check them out. I like them because of one thing in how they do their presentations: first you watch a video in which they explain the concept and then, more importantly (at least in my case), you get the set of challenges where you yourself have to write the code in order to pass on to the next level – awesome! So I would say that their slogan “Learn by doing” is right on the spot.

This is by no means meant as a tutorial, but merely as my notebook where I write down things which I’ve learned. Ok, without further to do, lets check out what’s all this mumbo jumbo buzzword about Node.js.

Node.js (by Ryan Dahl) is in fact a wrapper, written in C, around V8 JavaScript runtime of Google Chrome engine which can be executed on the server.

Blocking vs non-blocking code: Node.js makes non-blocking possible by providing us with a callback function when the process (for example: file reading) is done.

var http = require("http");
var fs = require("fs");

http.createServer(function(request, response){
    response.writeHead(200);
    fs.readFile("file.txt", function(err, contents){
        response.write(contents);
        response.end();
    });
    response.write("This will most likely be printed before the file contents");
}).listen(8080);

To view this, visit http://localhost:8080  in your browser or do a curl request. Interesting thing to note though is that you will not get the same effect if you run it via curl in terminal and in browser, and here is my question on StackOverflow which helps answer why. Long story short (with more info about it later in the post):

…this is simply due to the behavior of the browser rendering engine which cashes the contents until response.end(); arrives, and then renders whole response. Socket.IO and this article should be of help

As explained in the StackOverflow post, I solved this by using Socket.IO (explained in more detail below in the post) and here is the simple example:

//timeoutTest.js
var express = require('express'),
    app = express(),
    server = require('http').createServer(app),
    io = require('socket.io').listen(server);

server.listen(8080);

app.use(express.static(__dirname + '/'));

app.get('/', function (req, res) {
   res.sendfile(__dirname + '/timeoutTest.html');
});

io.sockets.on('connection', function (client) {
   client.emit('msg', "This prints right now on connection.");

   setTimeout(function(){
      client.emit('msg', "This prints out after 3 secs.");      
   }, 3000);
});

//timeoutTest.html
<!DOCTYPE html>
<html>
<head>
    <script src="/socket.io/socket.io.js"></script>
    <script src="jquery.js"></script>
    <script>
    $(document).ready(function(){
        var server = io.connect('http://localhost');
        server.on('msg', function(data){
            $('body').append(data + "<br/>");
        });
    });
    </script>
</head>
<body>
</body>
</html>

Upon first execution of the code Node registers events and then it goes into the so called “event loop”.

Instead of response.write(string)  as the last command, you can put it in end() function like this response.end (string);

How to use event emmiters:

var EventEmitter = require('events').EventEmitter;

var logger = new EventEmitter();

logger.on('error', function (msg){
    console.log('error: ' + msg);
});

logger.emit('error', 'sth went wrong');

Same “#$! different packaging:

http.createServer(function(req, resp){}); 

//is the same as:

var server = http.createServer();
server.on("request", function(req, resp){};

Pip | ing:

var fs = require('fs');
var http = require('http');

http.createServer(function(request, response){
    var newFile = fs.createWriteStream('newFile.md');
    request.pipe(newFile);

    request.on('end', function(){
        response.end('uploaded');
    });
}).listen(8080);

//test like this:
curl --upload-file someFile.txt http://localhost:8080

File uploader:

var fs = require('fs');
var http = require('http');

http.createServer(function(request, response) {
	var newFile = fs.createWriteStream("readme_copy.md");
	var fileBytes = request.headers['content-length'];
	var uploadedBytes = 0;

	request.pipe(newFile);

	request.on('data', function(chunk) {
		uploadedBytes += chunk.length;
		var progress = (uploadedBytes / fileBytes) * 100;
		response.write("progress: " + parseInt(progress, 10) + "%\n");
	});

	request.on('end', function(){
        response.end('uploaded');
    });
}).listen(8080);

A side-note; console.log()  does in fact call process.stdout.write.

While calling your own modules, you require them without the “.js”

//custom_hello.js file
var hello = function() {
    console.log("hello!");
}
exports = hello;

//custom_goodbye.js file
exports.goodbye = function(){
    console.log("whot!?");
}

//--usage:
var hello = require('./custom_hello');
var gb = require('./custom_goodbye');

hello();
gb.goodbye();

When you’re requiring with “./” it searches in the current file directory. When, however, you search without it and just write the name of the module it first searches in the file directory for a folder named node_modules, then it goes folder up if it doesn’t find it in recursive.

npm install request  installs it locally and you can (only then!) require it in your code, whilst you should do a global installation  npm install coffee-script -g  if the module has an executable.

//package.json
{
  "name": "My Awesome Node App",
  "version": "1",
  "dependencies": {
    "connect" : "2.2.1",
      "underscore" : "1.3.3"
  }
}

package.json  file is cool as you can distribute the “barebones” app, which once downloaded can be fully installed by doing npm install  (it also installs sub-dependencies if needed).

Express – web application framework for Node.js: npm install express

var express = require('express');

var app = express(); //prior versions: express.createServer();
app.get('/:param', function(request, response){
    var param = request.params.param;
    response.send(param);

    //or, templates are also supported!
    response.render('tweet.ejs', {tweets: tweets, name: username});
});

app.listen(8080);

//tweet.ejs
<h1>Tweets for <%= name %></h1>
<ul>
    <% tweets.forEach(function(tweet)){ %>
        <li><%= tweet.text %></li>
   <% }; %>
</ul>

//but, also you need layout.ejs
<!DOCTYPE html>
<html>
    <head>
        <title>Some cool title</tile>
    </head>
    <body>
        <%- body %>
    </body>
</html>


Socket.IO
 – aims to make realtime apps possible in every browser and mobile device.
npm install socket.io

Simple chat application

var express = require('express'),
	app = express(),
   	server = require('http').createServer(app),
   	io = require('socket.io').listen(server);

server.listen(8080);

app.use(express.static(__dirname + '/'));

app.get('/', function (req, res) {
   	res.sendfile(__dirname + '/chat.html');
});

io.sockets.on('connection', function (client) {
   	client.on('join', function(name){
   		client.set("nickname", name);
   	});

   	client.on("msg", function(data){
      	client.get("nickname", function(err, name){
      		client.broadcast.emit('msg', name + ":" + data);
      	});
   	});
});

Very important thing to note here is that in order to make use of jQuery library you have to set the correct path to your js files in the app.use()  function.

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="/socket.io/socket.io.js"></script>
    <script src="jquery.js"></script>
    <script>
    $(document).ready(function(){
        var server = io.connect('http://localhost');

        server.on("connect", function(data){
            nickname = prompt("Your nickname:");

            server.emit("join", nickname);
        });

        server.on('msg', function(data){

           $('#recv').append(data + "<br/>");
	    });

	    $("#send").on("click", function(event){
            event.preventDefault();

            $('#recv').append($('#msg').val() + "<br/>");
    	    server.emit('msg', $('#msg').val());
    	});
    });
    </script>
</head>
<body>
    <input type="text" id="msg" name="msg" value="testets"/>
    <input type="submit" id="send" name="send"/>

    <div id="recv" name="recv"></div>
</body>
</html>

mongoDB –  open-source document database, and the leading NoSQL database written in C++. mongojs – A Node.js module for mongodb, that emulates the official mongodb API as much as possible. Installation via npm: npm install mongojs .

//db.js
var databaseURI = "mydb";
var collections = ["users"];
var db = require("mongojs").connect(databaseURI, collections);

module.exports = db;

//dbtest.js
var db = require("./db");

db.users.save({email: "[email protected]", group: "A"}, function(err, saved) {
  if( err || !saved ) console.log("User not saved");
  else console.log("User saved");
});

db.users.find({group: "A"}, function(err, users) {
  if( err || !users) console.log("No A group users found");
  else users.forEach( function(user) {
    console.log(user);
  });
});

In order for this to work mongoDB has to be installed on your system and it has to be running.  Installation instructions are clear and concise on their website, but a tl;dr is: download the zip package, unzip in c:\mongodb , make c:\data\db  folder, run c:\mongodb\bin\mongod.exe.

Books

The Little Prince – Antoine de Saint-Exupéry

Since I very much like to read non technical books also, and I have a habit of collecting quotes in my “quotes book”, I’m about to start and post every Thursday all the quotes that I wrote down from some book. What better book to start with than with The Little Prince by  Antoine de Saint-Exupéry.

All grown-ups were children once.

It is sad to forget a friend.

You know… when one is so terribly sad, one loves sunsets.

The land of tears is so mysterious.

At the time, I was unable to understand anything! I should have based my judgment upon deeds and not words. She cast her fragrance and her radiance over me. I should never have run away from her! I should have guessed at the affection behind her poor little tricks. Flowers are so inconsistent! But I was too young to know how to love her.

I’ve been silly. Please forgive me. Try to be happy. Of course, I love you. If you were not aware of it, it was my fault. This is not important. But you have been just as foolish. Try to be happy…

Don’t hang about so, it’s irritating. You have decided to leave, so leave.

If I ordered a general to change himself into seabird, and if the general did not obey, it wouldn’t be the general’s fault. It would be my fault for ordering him to do the impossible.

One must demand of each and everyone what he or she is capable off.

Authority is first and foremost based on reason.

It is far more difficult to judge oneself than to judge others.

What are you doing here? I’m drinking. Why are you drinking? In order to forget. Forget what? Forget that I’m ashame. Ashame of what? Ashamed of drinking.

Kings own nothing, they reign over.

When one wants to be funny, one may have to lie a bit from time to time.

One feels rather lonely in the desert.

I thought I was rich with a flower unique in the world, where is in fact all I had was a common rose.

One can only understand the things one tames.

That’s right, said the Fox. To me you’re still just a little boy like 100,000 other little boys and I have no need of you and you have no need of me either. To you I’m just a fox like 100,000 other foxes, but if you tame me, we shall need one another. To me, you will be unique. And I shall be unique to you.

Men have no more time to understand anything.  They buy ready-made things in the shops, but since there are no shops where you can buy friends man no longer have any friends.

Words are source of misunderstandings.

Thus it was that the little prince tamed the Fox. And when the time for his departure came the fox said “Oh, I shall cry.” It’s your own fault, said the little prince. I wished you no harm, but you wanted me to tame you. Yes indeed, said the fox.  But you are going to cry, said the little prince. That is so, said the fox. Then it has not helped you in anyway. It has helped me, said the Fox, because of the color of the wheatfields. Then she added: go and have another look at the roses and you will understand that yours is indeed unique in all the world. Then you will come back and say goodbye to me and I shall tell you a secret as a gift.

None of you is at all like my rose. As you are nothing, he said to them. Nobody has tamed you, and you have tamed no one. You’re beautiful but you are empty. One cannot die for you.

It is only with one’s heart that one can see clearly. What is essential is invisible to the eye.

No one is ever satisfied where he is.

It is good to have had a friend even if one is going to die.

What makes the desert so beautiful is that it hides a well, somewhere…

Time soothes all sorrow.

Page 50 of 51« First...102030«48495051»

Recent posts

  • Discipline is also a talent
  • Play for the fun of it
  • The importance of failing
  • A fresh start
  • Perseverance

Categories

  • Android (3)
  • Books (114)
    • Programming (22)
  • CodeProject (35)
  • Daily Thoughts (77)
  • Go (3)
  • iOS (5)
  • JavaScript (127)
    • Angular (4)
    • Angular 2 (3)
    • Ionic (61)
    • Ionic2 (2)
    • Ionic3 (8)
    • MEAN (3)
    • NodeJS (27)
    • Phaser (1)
    • React (1)
    • Three.js (1)
    • Vue.js (2)
  • Leadership (1)
  • Meetups (8)
  • Miscellaneou$ (77)
    • Breaking News (8)
    • CodeSchool (2)
    • Hacker Games (3)
    • Pluralsight (7)
    • Projects (2)
    • Sublime Text (2)
  • PHP (6)
  • Quick tips (40)
  • Servers (8)
    • Heroku (1)
    • Linux (3)
  • Stack Overflow (81)
  • Unity3D (9)
  • Windows (8)
    • C# (2)
    • WPF (3)
  • Wordpress (2)

"There's no short-term solution for a long-term result." ~ Greg Plitt

"Everything around you that you call life was made up by people that were no smarter than you." ~ S. Jobs

"Hard work beats talent when talent doesn't work hard." ~ Tim Notke

© since 2016 - Nikola Brežnjak