My Last Post on This Domain

OK guys,

I think that it is time for me to publish the last post on this blog using WordPress as a domain. As you probably already know, GitHub is my favorite company and I have decided to switch my blog to a completely new domain.

I have published a couple of posts exclusively on the new domain and backed up every post from this domain to my new address (with one exception, but I’m working on it). I feel confident now to make the switch and I started to feel really comfortable using GitHub + Jekyll as a blogging platform, so I’ve decided to drop by and say good bye to my old domain.

From now on, you can follow me on r3bl.github.io. Be sure to use the http version of the site because https version is currently not properly implemented in the code. If you run into some issue while browsing the site or you miss a feature that I had implemented on this domain, feel free to report it here.

As always, you’re more than welcome to contact me anytime on aleksandar.todorovic@mail.ru. I hope that you’ll continue to read me on my new address.

Sincerely,
Aleksandar Todorović

Why Have I Decided To Switch My Blog To a GitHub Pages + Jekyll Combination

WordPress was a great platform for the beginning of my blogging experience. The simplicity needed for the creation and maintaining of the WordPress blog is amazing. It literally took me 10 minutes from the creation of my blog to my first post. But, a few days ago, I’ve decided that it is time for me to switch to something more powerful. I’ve decided to switch to Jekyll blogging platform.

Why have I chosen GitHub + Jekyll as my new platform?

Well, first of all, my PHP knowledge is very limited. I have always considered PHP to be the weakest spot in my education. And, on top of that, I’m not that comfortable with databases for now. Jekyll has allowed me to run a completely self-maintained blog without using any PHP or MySQL.

Using this combo is going to boost my GitHub profile and my Git knowledge

Because of the excellent Jekyll integration with GitHub pages, maintaining a blog using Jekyll is going to force me to use GitHub even more than I have used it so far. And I think that is great. By doing so, I’m going to visit GitHub more often, which will boost my desire to hack and program new things (this is the newest project I’m planing on making a reality).

It will also boost my GitHub profile in the search results, which is something I desperately need to do. While Google-ing my full name, I found out that there’s an actor, a photographer and a war criminal with the same name as mine. You can imagine the surprise of my future employer if he sees my name associated with a term such as a war criminal.

I love every single product that GitHub developed over the years

Lets be honest, GitHub is my favorite company and I love every single feature they’ve developed over the years. I love their tight integration with Git, their pages, their Gists, their Atom text editor and their Student Developer Pack (even though my request is still in the verification process).

Markdown has become my favorite markup language

Ever since I’ve started using GitHub more regularly, I’m amazed by the simplicity behind Markdown. I’m using it to type everything from by blog posts to my collage papers and essays. Now, to be honest, I’ve written most of my posts using Markdown even back when in my WordPress days, but Jekyll allows me to update my blog in an incredibly simple way. I just have to write my post inside of a new Markdown file, update my repository and that’s it. I don’t even have to open Firefox to post something.

An option to choose a commenting platform

Lets be honest, if you need comments on your website, Disqus is the way to go. Most of the sites I’m visiting are using it, and I see no reason of why I should choose anything else.

I love having the full control over my blog

Worpress.com is a free platform and as such it does have some advantages and some limitations. Even though I loved the simplicity of some feature (like a WordPress stats feature), I hated the way I was limited in the customization of my blog. Using this combination, I have no limitation that I’m uncomfortable with. I can customize my blog in any way I want and it feels great! Every Jekyll customization, every theme and every plugin I ran into were completely free (as in both speech and beer) and because of that I can customize every single aspect of them as I wish.

So, how will I make the transition happen?

Now this is a tricky one. I have decided that I’m going to be using this combination permanently, but I do have a lot of work to do before making the final switch.

First of all, there are still some parts of this excellent HPSTR Jekyll theme that I haven’t customized properly (or at all). This is why I’m regularly updating a TODO.md file to remind myself of what still needs to be done.

So, if you like my blog, I encourage you to go through that TODO.md file and to report any issues that I haven’t noticed inside of that file here.

In the meantime, I’m going to post on my old platform and my new platform until I’m completely satisfied with the switch. I have also started posting my most interesting articles on Medium not too long ago, so you might want to check that out as well.

You can expect some great new things like SSL support, my own domain and a fully customized home page in the near future. And, in the spirit of open source software, every single line of code is available for you to fork and use in your project in any way you want.

Reasons Why GitHub is My Favorite Technology-Related Company

In this post I’m going to share with you a few reasons why I consider GitHub as my favorite technology-related company. If you still don’t know what GitHub is, you should continue reading this article because I’m going to share with you some of the most popular features GitHub has integrated in their service.

GitHub logo

What is GitHub?

GitHub is a web-based Git repository hosting service, which offers all of the distributed revision control and source code management (SCM) functionality of Git as well as adding its own features.

This is the definition I borrowed from a GitHub Wikipedia article. In short terms, it’s a place where every developer (or a student soon-to-be developer like me) can share their source code and their stories with the world. It’s a huge and highly respected collaboration platform.

It’s been used by every big technology company you can think of. Let me give you a few examples: Google, Twitter, Mozilla, Microsoft, Facebook, Adobe, IBM, Yahoo!, LinkedIn, Netflix, Dropbox and PayPal. Still think GitHub doesn’t have a huge support? What if I told you that White House uses it too? I bet you didn’t know that some of these organizations even participate in the open source community at all!

So, why have they all chosen GitHub as a platform?

A Great Place to Store Your Code

Let’s be honest, today, if you’re not hosting your source code on GitHub, your open source project does not exist. I have a lot of respect for other solutions such as Launchpad and BitBucket, but lets be honest, GitHub is the place to go if you need a place to share your source code.

Huge Developer Community

There are 8.2M people collaborating right now across 19M repositories on GitHub. Developers from all around the world are building amazing things together. Their story is our story.

I borrowed this quote from GitHub’s press page. Over eight million people is not a small number, and they’ve all chosen GitHub as their choice. Together, they’ve created around 19 million repositories.

GitHub as a Replacement for LinkedIn

Don’t get me wrong, I love LinkedIn and I’m using it myself for quite some time (you can find my LinkedIn profile here). But the truth is, you can post pretty much anything you want on LinkedIn and you can perfect your profile in any way you want. GitHub does not allow you to do the same.

Everything you publish on GitHub, you prove it right away.

As an example, lets say that you posted on LinkedIn that you know how to program using C++. Your connections can endorse your skill and your employer can be sure that you know how to program using C++ if enough of your connections endorse it. But, if he visits your GitHub profile, he can see your C++ knowledge in action. He can read the code you’ve posted and based on the code, he can make sure that you’re a creative and a collaborative person, and that you have an experience in working with C++.

Now don’t get me wrong, your GitHub is not a replacement for your resume and you should not think of it as a replacement for your resume. But, it is a place where you can show your skills instead of talking about them. And there are some projects like Open Source Report Card that grabs your public GitHub data and represents them in a way that’s pretty similar to a resume (check out my Open Source Report Card here).

GitHub Pages

Now, let’s say that you want to build a website that represents you, your organization, your company, or anything else. You have a couple of options. You can buy your own domain and hosting service and build it from scratch. You can choose some freemium service like Wix, where you will create a stunning website in minutes without any coding knowledge, but you will be limited to the features that service allows you to do.

So, lets say that you want to have a full control over your site, without any limitations what so ever, and you showcase your website development and design skills in the process, all of that completely free of charge. The solution? GitHub Pages! You can create your personal website, a website for your organization or a website for your project straight away. And it’s not really complicated to do that. Don’t believe me? Check out my online portfolio! It took me less than 15 minutes to create it using a template offered by GitHub, and I have a full control of that website, which explains how I managed to alter the design of the template called Hack by Ben Bleikamp (see how original template looks like here).

GitHub Training

GitHub uses Git, which is a distributed revision control system designed and developed by Linus Torvalds for Linux kernel development back in 2005. It has become the most widely adopted version cotrol system for software development there is (source).

Now, lets say that you don’t know how to work with Git, the same way I didn’t know how how to work with Git not too long ago. Problem? Heck no! All resources for working with Git using GitHub as a platform are already provided for you by GitHub itself! GitHub offers you free resources (or training kits as they call them) here and you also have a few free online courses available here. Whatever learning option you choose to use out of those provided, you’ll see that your materials are divided in three difficulties: beginner/foundations, intermediate or advanced.

GitHub Gists

This is the newest addition to the GitHub services. It’s a place where you’re able to share your text or a part of your code publicly (which means that your gist will be searchable by a search engine and viewed from your profile) or privately (which means that only people you choose are going to be able to view it, and you share Gists with them by simply copying a link).

Atom Text Editor

After I found out about Atom, I fell in love with GitHub all over again. Atom is a hackable text editor for the 21st Century (as advertised by GitHub).

So, a hackable text editor, what does that even mean?

That means that you can hack every single thing inside of that text editor. Don’t know how? Not to worry, there are thousands of packages already available, all of them hosted on GitHub and offered free of charge. Don’t like the design of the editor? Pick your favorite flavor of Atom out of thousands of them available here. You can customize your installation to be anything from a simple text editor to a full IDE (short for Integrated Development Environment). Heck, you can even write your publications, your blog posts or your books in it. In fact, I even used it to write the post you’re currently reading (see the picture below) in the same way I’m using it to write every single post on my blog.

Picture of how I wrote this post

GitHub Student Developer Pack

This is something I recently discovered. A few days ago, I got a letter from my collage professor stating that as a student, I’m eligible to get a GitHub Student Developer Pack, which offers me over 15 free and paid development tools from GitHub and its partners at a huge discount. Now, I should point out that I’m still in the verification process at the time this article is published. This process could last for weeks! But, I should also point out that a guy called Alex Fernandez from GitHub staff has personally apologized to me for that. The reason why this process lasts for so long is because they have to review each request manually, which does take quite some time.

GitHub-Mark-64px

GitHub Has an Amazing Support

I’m a developer. I use a lot of stable and unstable software and services on a daily basis and it is important to me to get the support as fast as possible. I had an issue with a certain GitHub feature so I decided to contact GitHub support. I’ve got an email response in like 20 minutes, and they’ve been very helpful in the process. They’ve managed to explain to me why I had this issue and what I had to do to resolve it. I have to give them a straight 10/10 for their support.

So, if you are a developer, is there a reason not to use GitHub?

Honestly, I don’t think there is. If you’re developing a proprietary software, there are plenty of reasons why you should not post the source code of your application on GitHub. But, that should not stop you from working on open source software in your free time. By doing so, it will benefit you (once you start looking for a new job), it will benefit the developers behind a project that you’ve decided to be a part of, and it will benefit every single user of that open source project. GitHub offers you a wide variety of opportunities and you should take advantage of them!

Best (Linux) Programs and Services I’ve Started Using in 2014.

In this post, I’m going to share with you a couple of programs / web services / apps that I’ve started using regularly in 2014. I’ve discovered some of them in 2013, but in 2014 I really started to use them on a regular basis. I hope that you will find something for yourself in my list.

Best operating system: elementary OS Freya

I’ve been using elementary OS since 2013. But it definitely became my primary operating system in 2014. I haven’t used Windows in months now and I’m not missing anything. Plus, It’s a real joy participating in the development since the release of Beta 1 version. I’m also translating elementary OS to Bosnian language in my free time. Too bad I haven’t finished my job by the end of 2014, but I think that the translation is pretty much usable by now.

Best text editor: Atom

This is a hackable text editor for the 21st century, as advertised by worldly-known GitHub. I’ve been using it for a couple of months and loving every single aspect of it. In fact, I’m writing this and every single other article in it using Markdown as a styling language before posting them to WordPress.

Best productivity apps: Todo.txt, Gitit and RescueTime

I’ve been using Evernote for a couple of months, but the clunky interface of the desktop version for Windows and the fact that there is no official Linux client really started to annoy me big time.

So I’ve started looking for the alternatives and Todo.txt in a combination with Gitit looks like a perfect alternative to me. So, what I’ve started doing is writing my notes inside a wiki that I’m running on my local machine (using Gitit as a platform).

I’m using Todo.txt as my to-do list natively in Linux using QTodoTxt and so far it works great! Been using it for a couple of months now and I see no reason why I won’t be using it throughout 2015.

RescueTime is not really a productivity app. It’s more of a way to see how productive you are really. With the native application running in the background, I can see how much of my time has been spent doing something productive. Native Linux client and Firefox add-on are a perfect combination for me.

Best tools for communication: Pidgin, my blog and Twitter

I’m really loving the way Pidgin is integrated in my operating system. I’ve been using it since 2013, but now I’m using it exclusively to chat with my Facebook friends. In fact, I’m opening Facebook no more than once a day now, which means that most of my time is spent doing something a little bit more productive.

I really found myself in the management of this blog. I’m enjoying every second of writing stuff for my audience and I’m pretty satisfied with the support I’m getting from you guys.

Twitter has been my primary social network since the end of the 2013. But, in 2014, I’ve started running two Twitter profiles, one personal, and one for my business communications. I’ve managed to bond with some awesome people and learn a lot by reading articles other people are suggesting to me through their Twitter feed.

Best cloud service: MEGA

Although I have 1 TB of space on OneDrive and one more TB of space in Mail.Ru Cloud, I have to select MEGA as my favourite for 2014. Unlike Mail.Ru Cloud and OneDrive it has a perfectly integrated Linux client and 50 GB of space is enough to satisfy my needs for now, although I’m planning to switch to some premium plan in the near future.

Best reading services: Kindle and Digg

It’s been a while since I’ve discovered Kindle ebook readers. I’m still thinking about whether should I buy one or not. In the meantime, I’m really enjoying reading books through the online interface of the Kindle reader. I have over 150 books in my library now thanks to the Free eBooks subreddit and a simple IFTTT recipe which sends me the daily digest of new posts. I haven’t payed a dime for any of the books in it and I have books that are probably worth more than $1,000 dollars by now.

Digg is the perfect way for me to stay in touch with the latest news from my favourite blogs (such as those in my blogroll in the sidebar).

Best multimedia services: Popcorn Time, Spotify and Clementine

Even though I’m not a huge fan of pirating (I’m all about open source software and creative commons), the fact is that I live in a country where most of the movies and TV shows are not available. Popcorn Time really helps me to be in touch with my favourite TV shows and I’m loving the simplicity and the design of the application itself.

I’m from Bosnia & Herzegovina, a country with no music streaming service at all. That’s why I’ve had to wake the hacker inside of me and found a solution to run Spotify as my choice. Basically, I’m using OpenVPN once every 15 days to log into my Spotify account and then I enter a “vacation mode”, which enables me to run Spotify for the next 15 days. And Spotify does have a Spotify for Linux Preview client which, although a bit unstable, does the job perfectly for me so far.

And now, why am I including Clementine in this list? Well, it’s because of the Internet streaming option. I’m a big Digitally Imported fan for quite some time and recently I’ve started listening to SomaFM in the background while I’m doing something productive. I’ve chosen Clementine because it’s the perfect out-of-the-box solution for streaming those two services. In fact, I’m listening to my favourite Digitally Imported station called Bass & Jackin’ House right now.

Games: 2048, 0h H1 and South Park: The Stick of Truth

I don’t have any desire to play any complicated graphical game anymore. I’ve started to be a fan of logical games such as 2048 and Oh H1. The reason why I’m loving these two games is because they’re pretty simple to play, and the fact is that I’m not playing them for hours like I’ve used to play games like World of Tanks and NBA by 2k Sports.

From time to time, everyone needs a good amount of laugh. That’s why I really enjoyed playing South Park video game. Simple graphical interface + a good amount of humour is the winning combination in my case. I really wish that there’s a Linux version of it.

You might also enjoy reading the Top Motivational Quotes I’ve Discovered in 2014.

Ljudi vam dosađuju pitanjima tipa kako postati haker? Evo rješenja

Uvod

Svako od nas se bar u jednom trenutku života zamislio kakav je osjećaj biti haker? Možda ste i pokušali da istražite malo tu temu, a nemate dovoljno dobro znanje engleskog jezika da bi pratili engleske tutorijale? Možda imate druga koji je vidio da koristite Linux i odma je pomislio da ste haker? Možda vodite blog post i dobijate konstanta pitanja tipa “Kako da hakujem Fejsbuk od svoje bivše”?

Ukoliko spadate u bilo koju od ovih skupina, velike su šanse da nemate baš dovoljno živaca, motivacije i želje da objašnjavate svakome šta znači ovaj pojam. Zbog toga sam odlučio da sve postove domaćih autora sakupim na jedno mjesto, tako da od sada kada god dobijete slično pitanje možete sagovorniku poslati jedan link i završiti sa diskusijom.

Predstavljam vam kako-postati-haker repozitorij

Ideja ovog repozitorija jeste da se na jednom mjestu objave linkovi prema svim tekstovima domaćih autora (bili oni na “našem” jeziku ili na engleskom) na ovu temu, da se poređaju smisleno i pravilno grupišu. Na ovaj način se kreira jedinstvena lista tekstova preko koje nove osobe mogu da nauče nešto više o ovom pojmu, te se na taj način skida teret sa nas ostalih da prelazimo iste teme više puta i oslobađa nam se vrijeme da radimo neke bitnije stvari (tipa rekompajliranje kernela).

Repozitorij sadrži samo linkove prema teksovima. Na taj način piscima nije uskraćen broj posjeta na njihovim web stranicama. Pored svakog teksta se nalazi i naziv autora, te link prema njegovoj službenoj web stranici.

Budući planovi

Trenutno imam samo jedan plan za budućnost ovog projekta, a taj plan jeste da listu postavim na sopstveni host umjesto da se listi pristupa GitHub repozotorij. Pošto trenutno nemam iznajmljen vlastiti host, kreiraću GitHub stranicu za projekat i predstaviti ga tamo u međuvremenu.

Kako doprinijeti projektu?

Doprinijeti projektu možete na više načina. Prvi način svakako jeste da pronađete tekstove na ovu temu i dodate ih na listu (ukoliko ne znate kako, jednostavno me kontaktirajte i ja ću to odraditi umjesto vas). Možete da dijelite ovaj repozitorij ili pišete o njemu pa da na taj način više ljudi sazna za njega. Možete da pišete originalan sadržaj na ovu temu da popunite praznine. Možete da mi pomognete da napravim web stranicu projekta učestvovanjem u izradi HTML verzije stranice ili dijeljenjem svojih hosting resursa za ovu svrhu.

Tekstovi koji neće biti primljeni

Dozvoljeni su samo tekstovi prema kojima čitaoc nije dužan da se registruje na neki sajt da bi ih pročitao.

CodeCombat – The Most Fun Way To Learn New Programming Language

about_comic

If you ever programmed in your life, you’ve probably realized that the process of learning a new programming language can become quite a boring thing to do. You already know how to program in X programming language, but you need to learn the syntax of Y language for yourself / for some new project / for some job you want to get? Well, believe it or not, there is a fun way to do that.

I was never a huge fan of video games, but I did like to play a game or two once every few days. I haven’t played a single game for months now. I consider playing games as a huge procrastination. One of the main reasons I switched to Linux (almost completely now) is because I wanted to be more productive, and one of the ways to be more productive is to limit your access to the things that make you procrastinate*.

But, there’s a certain game that got my attention. It’s called CodeCombat and the point of playing this game is to teach you the syntax of a programming language in a very fun way. It’s an open source project (and if you’ve been reading my blog you know how much am I obsessed by everything related to open source) and the game is not limited to one specific programming language. You can select which programming language you want to use. My choice for a new programming language was JavaScript. This is a pretty well done browser game, so you can start playing the game no matter what platform you’re using currently.

Now I’m not in any way suggesting that this is the best way to learn some programming language, but it pretty much is the most fun way of doing that. So, if you like playing computer games, but you think that you’re waisting your time by playing them instead of learning something, this game is pretty much the best of both worlds.

trailer_1

* DISCLAIMER: I’m not saying that gaming on Linux is not possible. I’m a huge fan of the way how Linux gaming is advancing in the last year or two. I’m just having a huge self control over it.

Changing the design of my blog, desktop and twitter account

I feel pretty cyberpunk-ish lately so I’ve decided to change the whole look of three most important things to me: my blog, my Twitter account and my desktop.

I’m really feeling this concept art by a great artist called Andree Wallin. The art I like the most is called Headphones so I’ve decided to use it as my main inspiration for the design. So this is how my desktop looks like right now:

Screenshot from 2014-11-12 02:22:34 Screenshot from 2014-11-12 02:22:37

So what I did is I changed the background and then started to edit my Gtk theme and Purple Rain Conky configuration file. I did loose a couple of hours doing that, but I’m pretty satisfied with it right now and I’m getting a lot of positive feedback all over Google+ and Reddit for it.

Next thing I freshened up the design of my blog. So I’ve changed the theme and customized it a little. Hope this design works better for you. If not, contact me of course.

My Twitter is also re-designed, which means I basically only changed my avatar, header photo and the colour scheme, so I don’t have a lot to talk about that.

Oh, and the translation of elementary OS is going great! Although, I have to admit that I’m not a huge fan of Launchpad as a tool for the translation of such a big project.

 

What I’ve been doing lately? Translating elementary OS!

So, apart from writing my first semi-professional paper (which I wrote about – although in Bosnian – here) and organizing a contest on my blog where you could win a couple of Office 365 licenses for free, I started to fall in love into programming again. It’s been a couple of months since I programmed anything.

The last project I’ve been working on is working, but it has a hell of a lot of bugs. It’s called Sensitive Data Grabber and I’ve already written about it on my blog here. So, why ain’t I finishing it?

Well, the thing is that I’ve created that project using Visual Basic inside Visual Studio. You probably know that this kind of environment is Windows-specific. I’ve been spending most of my time lately using Linux as my primary operating system. I’ve found my perfect distribution and it’s called elementary OS (I already covered the reasons why here – again, in Bosnian language).

Now, because I don’t have enough knowledge in any programming language that can be run in my perfect distribution, I’m still adjusting. While I’m doing that, I’ve decided that I want to do something for the elementary community before I’m good enough to program some apps. Because of that, I’ve decided to start translating elementary OS to Bosnian language.

I’m not just getting started, I’ve already finished translating a lot of elementary-related projects. Now I only have seven (out of 37) projects left. That’s a little more than 2.5k strings to translate. It does seem like a lot, but I’m pretty confident that I will be able to finish that by the end of the year. Most of the operating system is already translated. By the time I finish it, I’ll probably be able to program some useful apps and then I’ll start to publish them using my own ppa.

I feel very optimistic right now. As the narrator says in the end of this great video:

I don’t know why, but.. I feel very excited about the future. Anything is possible now.

 

Update:

The translation of elementary OS is almost over! Only a couple of programs until you can use elementary OS without any problems if you come from Bosnia & Herzegovina!

LiBRE! 28 – Slobodni softver i internet stvari (1. deo)

Izašao je novi, 28. po redu broj LiBRE! časopisa. U ovom broju možete pročitati prvi dio teme Slobodni softver i internet stvari koju obrađujem u ime LiBRE! tima.

U prvom dijelu sam se zapitao možemo li računati na softverske gigante u uvođenje slobodnog softvera u internet stvari. Pored toga sam napravio uvod u to kako tačno rade pametni uređaji te tako napravio uvod za drugi dio članka u kojem ću obrađivati Spark projekat koji sam izdvojio kao najzanimljiviji projekat vezan za internet stvari koji se fokusira u potpunosti na slobodne tehnologije u svom biznis modelu.

Ukoliko ne želite da skidate čitav broj da biste pročitali tekst, tekst možete da preuzmete i iz za to posvećenog dijela moje web stranice.

Pored nastavljanja bavljenja ovom temom, u izradi je i moja prva ozbiljnija samostalna publikacija u kojoj se bavim u potpunosti drugačijom temom, uticajem muzike na ponašanje osobe. Ovo je prva tema koju obrađujem u svom cilju da savladam razumijevanje ljudskog ponašanja i načine preko kojih se ljudsko ponašanje može modifikovati u ličnu korist (pojam socijalni inžinjering). Kada rad bude završen, vratiću se regularnom blogingu.

What exactly is a hacker?

Quote:
Not to be confused, hacker is a person who wants to share his knowledge about computers with others. Hacker is every person who thinks in an unconventional way. An idea that a hacker is someone who does something malicious is an idea created in Hollywood.

This is a quote from a report about a hacking convention called BalCCon 2k14 that took place for the second year in a row in Novi Sad, the second biggest city in Serbia.

I think that this quote describes perfectly what a hacker is. I feel kinda tired of all those “you call yourself a hacker, you’re going to end up in jail” conversations and Google+ posts in hacker communities where idiots ask stuff like: “teach me how to hack fb plz”.

I do realize that 95% of people don’t understand us who call ourselves hackers and I do realize that they will probably never learn, but I feel so tired of this that I had to share this quote with you.

If you’re not sure what a hacker is, I suggest you to start learning by reading this Wikipedia article about a term hacker. You will start to realize that the hacker is a much more broader term than the one you have in mind, although I don’t think that this article explains it a lot.

In the end of this post, I want to share another quote with you. This quote is from Bruce Schneier‘s book called Secrets and Lies (2000) and I think that this definition covers it all.

Quote
A hacker is someone who thinks outside the box. It’s someone who discards conventional wisdom, and does something else instead. It’s someone who looks at the edge and wonders what’s beyond. It’s someone who sees a set of rules and wonders what happens if you don’t follow them. A hacker is someone who experiments with the limitations of systems for intellectual curiosity.

EDIT:
Here are some other articles written about what a term hacker is.