All posts by Abhishek Nagekar

Need For An Alternate Social Network

About a week or so ago, we were asked to choose our ‘web-technologies’ project, that would be among a group of two or three, and to be completed within the course of the semester. After forming team with two of my buddies at the college, we started to discuss about the possible theme of the project. From the very beginning, I had this idea to create a social network. After discussing with the other two, or I would rather say after convincing them, we finally settled to create a ‘social network’ model.

You can call me an avid social networker. I spend most of my free time staring at my computer’s screen and most of the times, I am not actually working but surfing the social networks I have unnecessarily signed up with, which eat up most of my productive time. Well, at least that was the truth up to a few months ago. I have made some interesting, and more appropriately, disturbing observations about most of the people on these social networks. Social networks are not the online social places anymore. They have become more anti-social networks. How?

Well, when was the last time you saw an ugly or not-so-perfect photo of your friend on Facebook? Or when was it that you read his or her tweet that didn’t have that touch of wit in it? Hard to remember, isn’t it? Not all do it, but one thing you might admit, most do. We hate to feel inferior. We want ourselves to be perceived better than the rest, and in that struggle to keep our fake identity updated, we keep adding tiny bits of false facts to that image. We have image editing and filter apps more than ever. Sites that provide humorous one liners are now full time. There is a rivalry to stay on top of the popularity ladder. People consider themselves less of a user, and more of a brand. Everyone wants to have an identity online, start a vogue, get famous, all in the easiest possible way. Who want to take the effort to create or discover something? Scientists are fools. Better is to use what you got at your disposal. Make stupid statements about others to get those 5 seconds of fame. Expose your body to get followers, is what exactly happens on Instagram half of the times. Click-bait headlines are all over the place, no site to trust over it’s content. News websites have started to look more like link exchange sites. The Internet is not the same good old place to share thoughts anymore, but a shameless self-promotion hub.

So what might be the possible solution to this? First culprit, in my opinion, is the followers thing. The problem lies in inequality in the distribution of followers. Some famous people get more followers, and in turn, get more ‘likes’ and ‘retweets’ even on their lamest posts. On the other hand, if some random guy posts a very interesting research, he doesn’t have the audience, so maybe his research won’t get that far. Now maybe he won’t mind it this time, but in the long run, when he and countless others like him, don’t get the appreciation they deserve but see crappy content making it to the trending news, maybe they will stop their research and get into making the content that makes it to the top. From experience, we know what content actually does. This is exactly how we are discouraging quality content on the Internet. Some sites have kept up very well (see Reddit) but for most, the future doesn’t look as good. The only apparent solution to this is to keep the ‘followers’ thing for topics, and not for people. That way, a celebrity and a commoner gets equal chance to be heard, and hence, reach out to the millions of other users typically found on any average sized social network today.

The second thing concerns me more, because it is not about the technology, but about the users of it. We are raising a generation which will never know the joy of meeting friends after a while, the joy of hanging out together and the joy in laughing over yourself. Because today fun is what is made of the poor and the powerless, and laughter is what you have when someone gets hurt. News is what the celebrities are up to, and sports is what the richest guys bet. The world has more of everything than ever, still life is more monotonos than ever. Let’s be honest, how many birthdays would you actually remember if there had been no reminders on Facebook? Not many, but still we go to the extent of doing a formality of typing ‘hbd’ on our friend’s wall on his or her birthday. Interesting.

The online social universe is degrading each day, and we are not doing much to help it. Good sources of news and content are like one in a thousand, if not less. The things must be changed, or it may not be long before Internet loses it’s meaning, and not stay worthy of spending time on, much like the television these days.

4th Semester And Then

It was in June that I appeared for my 4th semester exam (we have 8 in all, 2 each year). That makes me one half of an engineer, as far as the certification thing is concerned. Apart from that, I would not consider myself anywhere near to what standards I have for an Engineer in my mind. Nevertheless, the results were displayed late last month, and I managed to clear all the subjects, proudly entering the 3rd year of the course.

But since the exams, I did a few interesting things that I would like to let you know. Just after the exams, I took to Qt framework in C++ which I did for the next one month or so. Not much, but I did the QWidget class well enough to have coded some simple GUIs. It was quite interesting, and a useful asset that I think I own now. Later the interest turned towards web [again! :]. I started working on a social network written in Python, Django. I will update you once I get the base ready, and since it is the largest of all the projects I have worked on, I am quite proud and happy for it. Lastly, something even more amazing happened. I found my lost interest in Physics and Astronomy back. It is quite interesting, as to how it happened, but I will save that for a separate post.

The past two months have been great, from my personal perspective. I have basically transformed into someone else, hopefully wiser than I was before. Hopefully. There is a strong reasoning I found for making that statement. I started reading a lot, doubting even more and I found that it opened doors to newer dimensions to living my life. Everything, everyone exists just because they do. That’s it. Nobody, nothing, especially the universe, owes you an explanation to things that seem incomprehensible. Learn to accept it. Maybe it is a part of growing up, which I seem to have realized now. For what it’s worth, I will still stay curious, for that is what drives me and most of the people. Good night.

Social Share Counts Python Implementation

I wrote this little script that grabs the count of shares on popular social networks, using their APIs. I have listed the documentation on the project page on Github. I will copy the relevant pieces of readme here.

Social Network APIs

Facebook

Request:
https://graph.facebook.com/?id=https://www.github.com

Response:

{
   "id": "https://www.github.com",
   "shares": 31684
}

Twitter

Request:
https://cdn.api.twitter.com/1/urls/count.json?url=https://github.com

Response:

{"count":14,"url":"http://github.com/"}

Google Plus

Request:
https://plusone.google.com/_/+1/fastbutton?url=https://github.com

This returns the +1 button. I extracted the counts using regex window.__SSR = {c: ([d]+)

LinkedIn

Request:
https://www.linkedin.com/countserv/count/share?url=https://github.com&format=json

Response:

{"count":0,"fCnt":"0","fCntPlusOne":"1","url":"https://github.com"}

StumbleUpon

Request:
https://www.stumbleupon.com/services/1.01/badge.getinfo?url=https://github.com

Response too large.

Pinterest

Request:
https://api.pinterest.com/v1/urls/count.json?url=https://github.com

Response:

receiveCount({"url":"https://github.com","count":0}) 

Reddit

Request:
https://www.reddit.com/api/info.json?url=https://github.com

This returns a lot of data, which can be easily used to extracted counts.
Note that the Reddit guys don’t really like automated requests and may cause the call to return HTTP 429.

Vkontakte

Request:
https://vk.com/share.php?act=count&index=1&url=https://github.com

Response:

VK.Share.count(1, 419

This marks the end of the documentation. I hope that serves some purpose. The reason I wrote this was that I wanted social sharing buttons on this blog. I could not afford any of the mainstream buttons like Addthis and Sharethis. They kill the load time, and I’m already struggling with Disqus and Adsense overload. More on that soon. I hope to create a ‘dynamic looking’ static set of buttons for this blog, and I’ll update you if I get time to complete it.

First Anniversary Of My Blog

Last month, I was reminded by Bigrock.in about the pending renewal of nagekar.com. It was through an email. I had completely forgotten the date of registering the site and it came in as a handy reminder. 6th of June it was, in 2014.

I had an affinity towards blogs and blogging right from when I was 15. That was when I had seen the first blogs and shortly after that, it was when I created my first blog. It was in the morning, of 5th March, 2011. I knew I was up to something awesome. 7 in the morning, I was home alone. I remember mom and dad had to go out early, to receive some guests. I spent an effort filled three hours and finally got the site up at around 10 am. The domain was geekystuffforall.webs.com (It reads, Geeky Stuff For All, if you had trouble). It felt good, to have an identity. I wrote a paragraph for the homepage, which was the first post for me, ever.

Hi everyone, if you are searching for someone who thinks spending 8 hours in front of a PC is normal, you are at the right place 😉
You will not find any amazing new hacks or such stuff here.Then why this site ? It is because I am not a computer expert but computer enthusiast just like you. I will try to share whatever new I come to know. I would be extremely pleased to hear from you.
By the way I am Abhishek Nagekar. You can meet me on Facebook(If you like to !!)

March 5, 2011

And that was also the last thing I wrote on that blog. It was not that I got bored or anything, but I was quick to realize more amazing platforms are available that gave more control to bloggers. I created something called cyber-outlaws.blogspot.com to post all the tricks and hacks I then knew. I worked pretty well. I had around 800 views in the first month, which is good number compared to even this blog. Then came many more blogs on numberous subdomains on almost every popular free hosting out there. My ‘niche’ had changed from hacks and tricks to mobiles and gadgets, news and reviews alike. I though about moving on from something.somehost.com to something.com, mostly because of the fact that I could have a [email protected] like email address. I registered my first top level domain, lulztec.com on Godaddy. It costed about INR 99, or USD 2, under a promo scheme. It was back in May or June, 2013. I was just out of junior college, and it was time to make some money. I blogged and blogged, but did not get the traffic I was expecting. After 2 or 3 failed attempts to signup for Google Adsense, I finally settled for Chitika and Infolinks. I didn’t make anything for the next 6 months I kept them on my site (I did actually make $2.80, but I will call it nothing because the cashout was $100, so I never actually got anything in hand).

I thought there was more to blogging than just posting new stuff everyday. I moved everything to a paid hosting company called Visiba. They were charging around $2/month back then. I was really impressed by their service and kept my blog there for another three months. Later, not seeing any improvements, I had to think what next to do, that would work. I purchased a small VPS from DigitalOcean, where I moved the blog and started writing Linux tutorials. I was paying $5/month to DigitalOcean, which is considered low for a VPS. Still, there was no sign of revenue and I was spending a great deal of time on blogging. I knew I had to change things. I registered a new domain called tutshub.net, where I decided to post technical tutorials. It worked only a little better with this one. Meanwhile, I was accompanied by my school friend, who used to be a blogger too. Together, we managed to get our blog under alexa 400k which was cool, I thought. Also, we tried our hands in the web development world, and registered nakshtra.org, which failed miserably. Tutshub.net was going good and it was mostly because of my partner Harshal, who worked harder than me. Here’s a snapshot I found at archive.org

But we decided to stop that blog. The last post was made in February 2014, and then we orphaned it. Blogging helped me to realize there is much more I can do, than just write about other people’s achievements. I got to be better than that, I thought. I still don’t know if it was a good decision but it definitely helped me concentrate on myself. It was a few months later, in June, that I got this blog. It was not aimed to be a traffic scoring blog, because I know for sure now, I cannot blog for traffic. One year passed, 30 articles written, tried many new languages and frameworks, got accepted by Adsense, did average in academics, made some great friends in college and many great things happened in just this year. I am glad I decided to start this blog which, as I have always said, is a diary to me.

As it happened, many people have appreciated the things I write, and there have been a lot of feedbacks, positive and constructive alike. I share this one year with you’ll, who took the time to read my thoughts. The past is history, quite a beautiful one. You, me, we grew wiser each day, and we’ve no intention of changing that. Finally, happy birthday! to my blog. Here’s to more good content in future.

Blog Moved To Github

Take a look around. Everything’s changed. Yet again. I am sure you’re probably sick of me changing the total appearance of this blog every 3 months or so, and you’re right in being so. Let’s go back into a little history. Around a year from now, I stumbled across Ghost blogging platform. It was clean, neat and beautiful. I knew I always wanted something like that to write. I didn’t have this (nagekar.com) domain at that time. I went ahead and started their trial, which gave me a subdomain at ghost.io to blog on. It was beautiful, visually and the overall experience. After having dealth with most of the popular opensource PHP content management systems like WordPress, Joomla and Drupal, this was something new altogether.

I registered this domain, about a week later and started using their minimal plan of $5 per month, which included 10k pageviews. It took me not long to realize that I couldn’t afford those $5 because, 1) it was a personal blog from which I wasn’t making any revenue, and 2) because being a student, I have to save money to utilize in other areas like books and all. I got off there, with the half dozen articles I published while I was there for a month and a half. I, with those articles in my backpack started wondering like a hunter, looking for a new shelter, cheap and simple. Svbtle was another platform that I liked, unfortunately I didn’t have an invite at that time, and even when I got the invite, the custom domain feature, which I needed, was only available to paid customers. Of course not everything can be free, and I have no complaints, rather I am grateful to them for such a wonderful platform. I had to settle for Blogger, as the forced ads in WordPress were something that made me hate WordPress.com. Initially, with a custom theme, a little complicated, but later reverted to simple one. Then I went to code my own, which turned out to be successful, as far as my goal was concerned. It was perfect. No foreign code and nothing that increased the load time.

There is a problem with near perfect things. They are boring. And so, I thought, was my blog. No new problems to troubleshoot and no commandline to work with. Blogger is everything what a writer sometimes needs, but we computer people are a different breed. We need problems, then be it in our own personal blogs. While randomly surfing, I came across Jekyll, a blog-like platform created to be used with Github, to publish static pages. I knew not much about how Ruby applications are, or how to set one, but thanks to their excellent documentation, I was able to set it up in less than a day. There is no database, simple text files which become posts and pages. Github automatically parses markup or markdown in the post, and you have a nice little blog which is free, easy to manage and test locally, everyone can see the source, plus new stuff can be published with a mere git push.

I liked the way the blog looks and feels. It is important for me to like it since I mostly blog for selfish reasons, haha, but I hope it is comfortable for others to navigate too. I would like to hear anything regarding the new look of my blog down in the comments, and constructive suggestions are welcome. Keep visiting.

Love For Graphical User Interface

I considered myself a ‘programmer’. One who can make stuff happen, put it on paper, my thoughts and use it as a framework to create working stuff in the digital world. As any programmer, I learnt to write command line programs first. What are command line programs, you’d ask. Well, a Command Line Interface (CLI) is an interface which reacts to not visual, but textual inputs from the keyboard. You never need a mouse to work with a command line, of course, if you’re skilled with that particular type.

Command lines were the only way people worked with computers in the past. It was a time when the other name for people who worked with computers was programmers and hackers. No one else had the time or skill to learn and master the complicated systems. But like everything, it changed. Back in 1973, we had the first computer system that ran a GUI, or Graphical User Interface. As it sounds, yes everything was now controlled by pointing device, better known to us as a mouse. This was the onset of computers for the non programmers. Now, everyone could learn how to make computers do stuff with few ‘clicks’. We never actually looked back since.

But same was not true for people who program the computer. Programmers still and will always prefer the command line interface for most simple tasks. There are actually some tough reasons for this statement. Mainly, although the task to master CLI tools is not easy, once you do it, it feels much more comfortable than to use the every changing GUI. Not to mention the low resources that are required to run these utilities, and consistency over different platforms or operating systems. As an example, I can write a CLI tool in Python and C++ to run on Windows and Linux, and you won’t be able to spot the difference between the four instances. Can I do the same with GUIs? No, at least not right now.

For the above few reasons, I never gave a thought to learning GUI programming, in any language. You don’t want to do something that is of no use to you, right? Maybe.

After been coding for sometime now, I gave a thought to why some people who are not very good programmers, succeed more than people who are great programmers. It was a thing that deserved a thought. After reading several success and failure stories on Medium and Quora, I was convinced that there is no lack of skill in any field on this planet. Take anything for example, like I thought about C++. The language I am getting better at everyday, people have been learning it from the past 30 years. Who am I challenging? It struck me that mastering some form of art (yes, programming is as much an art for me as astronomy) and creating something that people use, are not necessarily same sets. Though there is a large area of intersection, you can’t be sure that just being good at something will make you successful, whatever that word means here. It was good time for me to stop thinking about how good of a shot I am at programming, and start focusing on what the world actually needs that I can provide or produce, if at all I can.

That was the time I realized, CLIs are great, but if you want everyone to use your thing, you need to give them something they will love. You need to help them in a way that they are able to use the help. How did I expect everyone to love the CLI just because I think it is cool and looks all black and white (well, that’s what I think is cool).

Not everyone is a nerd. Not everyone has to be one. The world is so diverse. It is really satisfying to see an artist painting, a drummer performing and an athlete giving his best. It is this diversity, in us, the animals and the plants as well that makes our home, the Earth. We, geeks and nerds are no different. We love making stuff that work to our command. But we, like every other human present, also has the morale duty to help others with the stuff that excites us. Just as a painter sells his paintings, not only because he wants to earn from it, but also because he wants his art to spread, so that somewhere in a living room of some house, the hosts always get asked, ‘where did you get this masterpiece from?’.

There is a very different joy in seeing your creation being used. It is something different than doing what you love. Yes, it really is different. It brings the best out of you, a kind of motivation. I wanted to make something like that. I wanted to write GUIs. I took up learning it about a month ago, and I am kind of comfortable with Qt.

There are a lot of frameworks for writing GUIs, as anybody using a computer today can imagine. Plus, many high level languages provide APIs to write graphical applications within the language libraries, Java for instance. Still, having done some programming in C++, I had two basic options open in front of me, GTK+ and Qt. I choose Qt after reading some articles on Stackoverflow from users with similar dilemma. Qt is cool, lots of possibilities and support. Code is quite portable, and an important thing, I am enjoying it, which matters a lot, right?

If you wonder where am I right now with it, I am writing a GUI wrapper for the GNU’s dd utility which should make it simple for someone who’s just started using GNU/Linux to burn ISOs to disks, without the hassle of setting up a more than required complex tool or destroying the data trying to use dd from the command line by messing up the ‘if’ and ‘of’, for example.

Neat, huh? Haha. I will put it up once I finish it, but the important thing is, I could do it. The best part about being a programmer is, adapting is too easy. At least when beginning. And that is mandatory, given the ever changing world of Information Technology.

I’ll conclude this long post here. If you made it till here, then a big thank you. I feel it is hard to read what I write, because I tend to write my feeling, and mostly they don’t look the same on paper. Nevertheless, do tell me what you think about this article. Liked it, hated it, anything.

Creating Custom Blogger Template From Scratch

Although when I started with it, I hardly knew anything about a blogger template, but it turned out, designing a blogger template is easier than designing a HTML template. Just a few basic concepts and you are good to go.

Firstly, before digging into the template code, we will look at the grammar needed to code our thing. This simple article assumes you can read basic HTML, CSS and XML. Nothing above the basic level, plain simple stuff. If not, whenever you do not understand something, make sure you search that term or tag on w3schools to understand it. Yes, that’s all you really need, trust me.

Planning the layout

First of all, how do you want your blog to look like when it’s done. Just a basic idea would do. You must know what you are working for. Here is what I made. It is the way most simple blogs look like. Two column layout, a header on top and a footer at bottom.

Header
Blog PostsSidebar
Footer

Not the most interesting table, yeah I know. HTML tables, not really my thing. But this is what our end result should look like, structurally.

Basic Structure

These few lines make up a basic web page. You will see that this is quite similar to what we’re doing.

<!DOCTYPE html>
<html>
  <head>
    <title></title>
  <head>

  <body>

  </body>
</html>

And this is how a basic blogger template looks like.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html b:version='2' class='v2' expr:dir='data:blog.languageDirection' xmlns='https://www.w3.org/1999/xhtml' xmlns:b='https://www.google.com/2005/gml/b' xmlns:data='https://www.google.com/2005/gml/data' xmlns:expr='https://www.google.com/2005/gml/expr'>
  <head>
    <title><data:blog.pageTitle/></title>
    <b:skin><![CDATA[ /* CSS here */ ]]></b:skin>
  </head>

  <body>
    <!-- Blog elements here -->
  </body>
</html>

Pretty neat, isn’t it? Now, the elements of a blogger blog. Blogger is built upon XHTML, and uses the same for retrieving and displaying data from the database. A basic block of a blogger template is called a section. So all of these are sections.

Header
Blog PostsSidebar
Footer

And you have to define each section before you add ‘widgets‘ to them. A basic section block looks like this.

<b:section id=' ' class=' ' maxwidgets=' ' showaddelement=' '></b:section>

where id is any unique identifier (for CSS and JS later) and class value is used to tell blogger where do we plan to place this section. Maxelements is the maximum number of ‘widgets’ we can add to this section. Generally, it is useful to limit the number of widgets in header and footer to one. Showaddelement is that ‘Add gadget’ link you see in the layout window. It takes boolean value ‘true’ or ‘false’. Now there are ‘widgets‘ that go into these sections. Every separate component that you see on your blog is a widget. The ‘blog posts’ is one widget, ‘blog archive’ is another, and so on. These widgets can be directly added from the graphical layout tab in the control panel of your blog, but it doesn’t hurt to know how to add them manually, does it?

<b:widget id="HTML2" locked="false" title="Some Title" type="HTML" />

Similarly here,

  • id – is just an unique ID
  • locked – can the widget be moved around, in the layout tab? (yes or no)
  • title – The title that will be displayed on top of the widget
  • type – One of the many basic types that blogger supports (html, blog, feed, header etc)

For example, your ‘blog posts’ widget will be something like this

<b:widget id='blog1' locked='true' title='' type='Blog' />

That’s it. Add it to the template and blogger will fill it with auto-generated code you need not care about. This was all for the basics. Let’s start with some code now. I am using Bootstrap  to save myself from writing unnecessary CSS. First thing you do here is enclose the entire body in either container or container-fluid div.

  • container – for fixed width layout
  • container-fluid – for dynamic body width

I personally prefer fixed. This is the code so far. I added container class to the <b:skin> which we can (and will) customize later.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html>
<html b:version='2' class='v2' expr:dir='data:blog.languageDirection' xmlns='https://www.w3.org/1999/xhtml' xmlns:b='https://www.google.com/2005/gml/b' xmlns:data='https://www.google.com/2005/gml/data' xmlns:expr='https://www.google.com/2005/gml/expr'>
  <head>
    <title><data:blog.pageTitle/></title>
    <b:skin><![CDATA[ .container { }  ]]></b:skin>
  </head>
  <body>
    <div class='container'>
    </div>
  </body>
</html>

Now add the divs for header, post area, right sidebar and footer and corresponding CSS classes. Code trimmed for brivity.

<head>
  <title><data:blog.pageTitle/></title>
  <link href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css' rel='stylesheet'/>
  <b:skin><![CDATA[
    #container {
      max-width: 960px;
      margin: 0 auto;
    }
    #main-wrapper {
      width: 710px;
      float: left;
    }
    #sidebar-wrapper {
      width: 250px;
      float: right;
    }
    #footer-widgets {
      padding: 0px 0px 5px 0px;
    }
  ]]></b:skin>
</head>
<body>
  <div id='container'>
   <!-- Header -->
   <b:section class='header' id='header' maxwidgets='1' showaddelement='yes'>
      <b:widget id='Header1' locked='true' title='Blog title' type='Header' />
   </b:section>
   <div id='main-wrapper'>
     <!-- Blog posts area -->
     <b:section class='main' id='main' maxwidgets='' showaddelements='yes' />
        <b:widget id='Blog1' locked='false' title='Blog Posts' type='Blog' />
     </b:section>
   </div>
   <div id='sidebar-wrapper'>
     <!-- Right sidebar -->
     <b:section class='sidebar' id='sidebar' maxwidgets='' showaddelements='yes'>
       <!-- Widgets can be added from layout page -->
     </b:section>
   </div>
   <div id='footer-widgets'>
     <!-- Footer -->
     <b:section class='footer' id='footer' maxwidgets='' showaddelements='yes'>
       <b:widget id='Attribution1' locked='false' title='' type='Attribution' />
     </b:section>
   </div>
  </div>
</body>

The above code should look like this on any blogger blog.

The mobile site, I must say, would look horrible. Extra efforts are needed to make the template responsive. Since we already have Bootstrap, that is not a big deal either. I must conclude this post now, and for mobile friendly site, I may write an article soon. Also, there is no SEO in this template. You must add relevant <meta> tags to make your blog more search engine friendly. You can always override CSS rules of bootstrap by writing your own in the <b:skin> section.

Thank you for reading!

TechMax Publications – Plagiarism Check

I study for my finals from various sources, the Internet, class notes and some reference books. This time though, I had this Computer Graphics, by Sanjesh Pawale, Techmax Publications. The books from this publishing house are everything what a Mumbai University guy needs to study for exam. Well, not exactly, but that’s how most see this book as.

So when I was reading it, I noticed that much of what I read in the book was something I already read someplace else. A quick browser history lookup revealed that the stuff were taken from Wikipedia. Wait, let me rephrase it, the stuff were copied and pasted from Wikipedia, including the text, images and caption.

For your information, the content of Wikipedia is licensed under creative commons attribution share-alike 3.0. The license states that the usage is unrestricted. even for commercial use as long as appropriate credits are given and indications of modifications are made. Moreover, the content, modified or original, must be distributed under the same license.

https://creativecommons.org/licenses/by-sa/3.0/

But there’s a bummer. The content copied by Techmax shows no attribution, no credits to Wikipedia or it’s authors, and the worst, they have copyrighted the book under their name and it’s totally restricted.

Here is a piece of text from https://en.wikipedia.org/wiki/Wikipedia:Copyrights

To re-distribute text on Wikipedia in any form, provide credit to the authors either by including a) a hyperlink (where possible) or URL to the page or pages you are re-using, b) a hyperlink (where possible) or URL to an alternative, stable online copy which is freely accessible, which conforms with the license, and which provides credit to the authors in a manner equivalent to the credit given on this website, or c) a list of all authors. (Any list of authors may be filtered to exclude very small or irrelevant contributions.)

So it is mandatory for TechMax to provide a backlink to the webpage they are lifting the content from. At least a bibliography at the end of the book. The second part to this is copyleft/share-alike policy. To quote,

If you make modifications or additions to the page you re-use, you must license them under the Creative Commons Attribution-Share-Alike License 3.0 or later.

Hence, Techmax is also violating this by copyrighting the content under their own restricting license. They should consider revising their license.

And finally, as far as the students are concerned, why not just take a little more effort and learn from the web instead of a printed version of the web.

Edit. A little proof of what I am talking about. The content in the image in copyrighted by *cough* Techmax *cough* and Wikipedia.

From Techmax, page8-23

From Wikipedia

As I said, this is just an instance. If anybody is interested, just send me a mail. I would be more than happy to provide you with more proof. Cheers!

A Day Of Struggle With Python IDEs

Yesterday, I gave up on doing my next web application project with QT. I knew C++ was never meant to be a language of the web, but I really had some hopes with QT. It actually is good, and apparently it would have ran faster than any other platform or language for the web. The problem is, it is a lot time consuming to develop anything in it, especially web apps. I really don’t have all that time. So I decided to do it in Python or Ruby. After reading some articles, it became clear, they are not much different, where python is a more general programming language, ruby is more towards the web, with it’s rails framework.

I choose Python, just because I know how to write code in python, beforehand. It was time to go shopping for some good frameworks to develop this thing. No doubt, finally I had to decide between Django and Flask. I choose flask. It was damn too simple, or at least it seemed like that. I tried the simple hello.py script which displays “hello world” on the localhost port 5000.

I tried that in emacs, but immediately felt the need for an IDE in this foreign land. I looked in my ‘Downloads’ folder, and luckily there was Aptana Studio 3 still sitting there. I used to have it installed when I was into PHP last year. Since then, it got removed and thrown into a corner. I installed it. I really loved Aptana back then, for it’s usability. But now, it started to act like a stubborn child, refusing to detect Flask. I googled and googled, but alas, no way. Many people seemed to be having the same problem, and the only solution I saw didn’t work.

Seeing no way, I uninstalled Aptana, and googled for other good IDEs. PyCharm was what most were recommending. I decided to give it a try. Turned out, it was a memory hogger. Both my CPUs were doing a constant 100% and other windows turned sluggish too. About half a tonne of RAM was what it was utilizing, with a single .py file open with 4 lines of text in it. No way, again. Removed it, and went to eat some food. Damn.

I was not ready to go to the sluggish Eclipse again, nor Netbeans for the same reason. Finally I settled for Komodo Edit, free lite version of the commercial Komodo IDE. It lacks many things that you will ask for in an IDE, and it is a little better than using bare emacs or vim. Still, for now, I am using it. Configured it to execute python script right inside the window following this tutorial, https://stackoverflow.com/questions/21686395/how-to-run-the-first-python-program-in-komodo-edit-8-5

Life’s good, but just hoping to learn flask for my next project as fast as I can.

Debian 8 Jessie is here

The next major stable release of the Debian lineup, the 8th one, codename Jessie was launched on 25th of april, last month. And like every Debian release, this one was packed with an awfully large package repo, meaning more free stuff to choose from, one of the fundamental reason I use Debian.

The total package base, with this release, is over 43,000, which is a lot. The key features added to this release, make it one of the best Linux distros till date, imo. Not to mention, rock solid.

All the major desktop environments like GNOME, KDE, XFCE, LXDE are supported (No Unity, sad ;), just select the preferred one during installation and it will download it for you. Alternatively, some iso are marked which desktop environment it ships, and if not specified explicitly, assume GNOME3.

If you are already on Debian 7, to get Jessie, fully update the system:

sudo apt-get update

sudo apt-get upgrade

sudo apt-get dist-upgrade.

Then just head to /etc/apt/sources.list and replace every occurrence of wheezy with jessie and then again:

sudo apt-get update

sudo apt-get upgrade

That would be it. I noticed that Jessie is super fast, and I intentionally did a minimal install. The bootup and shutdown speeds are very impressive. Here is an amature video of me filming the shutdown time, LOL.

A note, if you go to the downloads page, there are multiple DVDs, like for example, the amd64 complete comes in around 10 DVDs, but you only need the first one. It contains all the installation stuff and most of the packages you’ll ever use, including the desktop environments.

Downloads page: https://www.debian.org/CD/

A tip, you can add the DVD contents to your hard drive and set up an offline repository. Mount the contents of the DVD or copy it to a local folder.

# in case of mounting the iso

mount -t iso9660 -o loop /home/abhishek/Debian/debian-8.0.0-amd64-DVD-1.iso /mount_point

Or just plain copy iso contents into the folder. Then add the following line on top of the /etc/apt/sources.list

deb file:///mount_point/ jessie main contrib

so that it will check for a local copy of the package first for offline package installation.

That was it for this promotional article [ 😉 ] on Debian 8. Hope you like the new release and use it.

Thank you developers.