Saturday, 6 June 2015

Smartwatch fad?

With the start of the smart-watch fad(it is still a fad as it is relatively new IMHO). Everyone thinks it is the new tablet and smart-phone, however Tablets were just a fusion of two already existing technologies (smart-phones and Ultra mobile laptops) and smart-phones were basically upgraded phones(everyone already had a habit of using phones). Everyone is hyped up about smart-watches.

However everyone forgets that the vast majority of people don't even have a habit of wearing watches. Some young people people even(myself included) never had such a habit and consider wearing watches uncomfortable.
In my opinion smart-watches don't offer anything that a smart-phone can't offer you. Some of you will say that it is tiresome to get out your phone out from your pocket,but that argument really only works with summer clothing. When you have long sleeves it is equally tiresome to roll your sleeves as it is to get out the smart phone from your pockets. Plus it makes you wear one more device.

So I have prepared a poll on the side of this blog post,please tell me your opinions on whether you will buy a smart-watch. As for myself, I just consider it a gimmick which I am not interested into. I am much more interested into augmented reality technologies like smart-glasses i.e. Google Glass and HoloLens. Though Google Glass seems to be design wise more something to take out on a date with friends so I would prefer it over HoloLens. I can't wait for Google's Glass 2. Now that might be a revolution.

Friday, 15 May 2015

What you can do to help Linux?


Let's face it today there are many people who are very enthusiastic about cutting edge technologies like GNU+Linux. However many of them have only vague ideas about how they can contribute to Linux and how they can help Linux establish a better position on the desktop market.
Well don't worry,there are many. Here are some in a top 10 list.

1) Write documentation

If you are a programmer(even not the most experienced one) the best thing you can do is to write proper documentation for your software. The reason for this is that by doing that you lay the groundwork for the rest of this list,especially for number 2. Also it does not have to be your own software. In the Linux world there are many libraries, API's, SDK's. In fact most good Linux developers are accustomed to using their actual Operating system as their development environment. However the problem is that many libraries, API's and SDK's and such are not well documented. Sometimes not even documented at all. This presents a hurdle for anyone developing third party applications who is not at least a seasoned programmer, and even they find it highly uncomfourtable. By writing documentation you are immensely helping other programmers. Don't forget to write many code examples in your documentation. Everything from hello world examples to complex algorhythms.

2)Program

Another great way to contribute to Linux is to write software for it. Just think about how nice it would be to have an application that does this and that and start writing. Or if you aren't up to writing a whole new application you can just join the developers of some other application if it is open source,or you can fork other applications as long as you credit the authors. Of course all of this in the case that the application is open source. Or you can join the developers of a Linux distribution. You know a great CLI program but want an interface for it? Why not write one yourself? Or if you feel up to it,the Linux kernel and base system developers are always looking for fresh recruits. However the main issue right now for desktop Linux is the lack of 3rd party support. So ideally you should develop 3rd party applications, and ideally provide an API from your application and its libraries.

3)Package

Pacakging is the process of transforming software from it's source code form into a more easily installable software package. The most common Linux software packages are known as .deb and .rpm.
Linux is very convenient for installing software. You just open up your software center, look around for your desired application for a bit and click install. Installing software on Almost every Linux distribution is no harder that installing software on your smartphone. Then for some software which is packaged but not on your software center, you have to use some google-fu, download the right package, double click on it and install it. However once in every while you will find some unpackaged software and to install such software, it can be a hassle. Especially for novice users. If you decide to do some packaging work by packaging some as of yet unpackaged software you will make the life of many Linux users a lot simpler. You can even go a step further and try to submit your packages to software repositories of some of the more popular Linux distributions.

4)Spread the word

Desktop Linux is still not a common household name.Most people outside of technology circles still don't even know it exists. Go out there on the internet, write blogs, communicate with people who are not Linux users. Of course,don't be annoying with it, however as soon as the topic arises or when you see an opening to start the topic, why not? Tell them how it is free(as in freedom and very often as in free beer), stable and secure. How people who invest a few minutes are able to find Linux distributions tailored for them, and how when using open source it is the computer that serves the user, not vice versa. Just remember, more users means more developers and more power users. If those developers are able to create something of value on closed platforms, just imagine what beauty could they make on an open platform like Linux.

5)Send bug reports

Some people have a preconceived notion that programmers don't want bug reports. They could not be more wrong about it. A good programmer really loves well written bug reports. Usually he will try to help even with not well written bug reports,but most of the time that is just not possible. Most Linux distributions have implemented bug report systems that do most of the work for you. In a well written bug report you provide detailed information about your hardware, the software you are using, the operating system you are using it on and detailed steps on what you did that triggered the bug. This allows the developer to reproduce the bug and subsequently fix it. And by sending bug reports you may accidentally even find out that the bug was already fixed or a workaround for it exists if many people already encountered the same bug as you did.

6)Donate

Most open source software is given to the user for free(as in free beer).However developers also need food. And there are usually other costs, like server upkeep. Although open source developers have other options for income(like ads or selling support for their software), donations can help greatly as well. And if you want a developer to support a certain device, you can even donate that device.

7)Translate

Even if English is the most widespread language in the world.Even if English is the language of the Internet, some people are still quite uncomfourtable with using software that is not in their mother tongue. And while most Linux distributions offer translations to most of the worlds languages, most 3rd party software is not translated, and if it is the quality of the translations is debatable.

8)Write tutorials

There are many new users on Linux every year. Also often software changes, which changes the users workflow. So many users will always appreciate a well written tutorial. Remember that when writing a good tutorial it is always better to guide the user by his hand.

9)Help people use the software

Because every moment Linux gains so many new users, those users often encounter problems. It would be beneficial if you would roam the forums or various help websites for Linux and try to answer some of the many calls for help Linux users have.

10)Be part of the community

Remember that Linux is a community driven project. In fact it is often better described as a movement than as a single operating system(which it isn't,every one of the 1000's of Linux distributions is its own system). Go out there and let your voice be heard. The different people leading software projects based on Linux usually keep track of the opinion of the community. In fact the community itself is usually punishing to those who don't listen. So your opinion might change the Linux world for the better! Just go out there, roam the forums, write blog posts like these etc...

So those are only guidelines. However if you do follow them, you are probably doing the right thing. And who knows,maybe one of those open source companies notices you or a company in need of a Linux administrator notices you as well, so you finally get your Linux dream job! ;)

Wednesday, 22 April 2015

Project Dashboard-Ubuntu app reviews


Project dashboard
Project dashboard is a project management application for Ubuntu mobile phones. It enables the user to manage software on Github, planing events(including personal events),keeping track of classes and projects,supports various plugins, bug tracking,an inbox with github notifications...In short it is a developers mobile application of choice.

What I have noticed is that the graphic design of this application is great. It fits perfectly into the standard UI design of the system. Another thing I like about this application is that despite its feature fullness the application does not seem to drain system resources. Another Thing I like is the fact that this application has everything a developer would want on his mobile phone application.

I have only 1 suggestion and 1 very tiny problem I have noticed. My suggestion is to make a text editor plugin with at least basic syntax highliting for either ANSI C or QML. Or just syntax higlighting for statements which are very common between popular languages.The problem I have noticed is that it needs a maintenance update(however,I have not noticed any breakage in my short time using it).

Anyhow I give this application a 5.0/5.0.I really like this application.And I think developers should aim their applications to meet the quality standards of applications like these.

Monday, 13 April 2015

Project Gutenberg-Ubuntu application reviews

Project gutenberg is an app that connects to the online service project Gutenberg.As such it provides over 46000 free ebooks.Including epub,kindle and html versions.Unfortunately I am not a lover of ebooks but I will try my best.

This app is very simple,and for this app that is enough,as it just serves to download ebooks.So it has all the features you would expect.You can browse popular ebooks,latest ebooks and random ebooks.Another thing I like about this application is that at least seemingly it does not seem to be just a web app.

One of the areas where this application can improve is that the color theme for this app could be improved.Another small problem is that once you select your ebook,if you choose to read it as html the application will redirect you to a web browser instead of reading it directly from the application.
Overall I give this application a 4.0/5.0.The areas where this application can improve do not seem to be big problems to me and yet the application does what it promises.I am sure ebook lovers will like this application.

Monday, 6 April 2015

Ubuntu app reviews:Green Mahjong

I have decided to start a new series of small application reviews for the Ubuntu phone and Ubuntu unity8.So Since I like to play the occasional game of Mahjong I decided to review “Green Mahjong”.One thing I have noticed which is neither an advantage or disadvantage is that you should play this application either on desktop or landscape mode(if you are on a phone).Note Since I don't have a BQ phone yet and Unity8 on desktop is still in its alpa/beta stages I will test most applications on the phone emulator which does not support landscape mode yet.

So what are the pros of this application?Well I like that the author decided to use realistic graphics instead of a flat design or some cartoon graphics. Also Also the app has a choice of several different levels so there is some re-playability. Another pro I have noticed is that the application has all the features you would expect from a Mahjong solitaire game.

The application also has some negatives.As much as I liked the graphics in this game,the shadowing on the tiles was too strong.And it might have been because of the emulator but the application seems to be not very laggy,but a tiny bit laggy. Another thing that I don't like is something that most Mahjong apps even on other platforms don't have:They only support Mahjong solitaire,there is no game mode for Mahjong Reach.

To summarize.I like this application.I give it a 4.5.It is not a masterpiece but I can clearly see that the developer wanted this application to be really good.I can see the effort of the developer in this application.It is free so if you want a game to waste 15 minutes while you are waiting for something,download it.And the developer is actively responding to user reviews.




Sunday, 29 March 2015

Is Microsoft making an EEE attack agianst Android?

We have all been reading lately about how CM wants to take away Google's control of Android.However after some thinking this idea came to my mind.(And I hope I am wrong about it)
It's not CM that will take control of Android.It's Microsoft that is orchestrating the attack behind the curtain.

Let's give some details about the whole thing so we can build a bigger picture:
-Microsoft is threatening Android OEM's with patents.Android OEM's are paying the MS tax.
-Microsoft has low end Lumia phones with Android,with an interface that is imitating the look and feel of Windows phone.
-Microsoft is trying to push it's office and skype onto Android phones by force.
-Microsoft open sourced its .net
-They even included an Android emulator in Visual Studio.
-Microsoft even offered CM a bribe(which was refused AFAIK)

Microsoft knows that the easiest way to kill Android is to take control of it.Because without Google as a driving force behind it Android will lose a lot of its vision and innovation.
Furthermore it is a very unfair(in some cases even illegal tactic) that huge megacorps like to use.Microsoft used to be especially  feared for using this tactic very often.You can find it on Wikipedia,it is called: "Embrace,Extend,Extinguish".

While some might not like Google,a bigger evil is trying to take Android over and destroy it.Some people are criticising Google lately for being overly authoritative in the Android world.But it might be that Google is trying to make defensive manoeuvres against Micrososoft.

Basically while the fact that Android is open source is one of its best advantages,it also offers a soft belly for Google's enemies.

Monday, 23 February 2015

Programming language choice:my 2 cents


One day I was having an argument about programming languages.Now as a learner and as somebody who has ventured trough 3 different IT universities succesfully this is what I have to say.
Anyhow,here is my qoute from that argument:
IMHO:
You should first learn the language for which you have the most talent.Whatever language feels the most natural to you.If it is for instance some obscure lisp dialect then by all means go learn lisp.If it is python,go learn it.Is it lolcode,qml,brainfuck,assembly or some language which is so hipster that nobody has ever heard about it?Go ahead.
The tragedy is that the industry and programming courses are not made to be language agnostic,so you are force fed to learn the languages they pick for you.


The plusses of my approach would be many,but just to point a few:
a)programmers that are happier about their life
b)better programmers
b.1)more programmers

c)better API support for a wider range of languages in the long run.




Why




The modern model where the industry forces the popularity of programming languages has some drawbacks.Another problem is in the fact on how programming courses are organised.

I think that most of us will agree that the choice of your first programming language is very important and that at least sometimes people can get discouraged from programming if their first programming language is not suited for them.

Ideally both the industry and the courses should be language agnostic.Now you might think it is impossible but no it is not...The basic principles of programming are identical in 99% of programming languages.The only differences are in the implementation.




How


It just requires some manpower from the education facility.In fact in my last course of programming on my undergraduate college I was attending a language agnostic programming course.And honestly I feel that course was the one where I learnt the most.I even caught up some stuff I failed to learn at earlier courses. (Like inheritance and anything related to OOP that is above simply instancing an object with getters,setters and constructors).

In the first week of the course students were required to pick one of 3 programming languages.C++,C# or Java.I picked Java which was that year the least popular choice.And I did not regret it.But before I continue I have to give thanks to my teachers prof. Goran Salamunićcar and his assistant Aleksandar Radovan,and the two other assistants who I did not have who implemented the course in such a beautiful and almost language agnostic way.


The course was split into  parts:Theory,laboratory work and a seminar.The theory was mostly done by the professor,the laboratories were handled by the assistants.

The theoretical part always was 2 weeks in advance compared to the laboratories,so that the students could use the theory as a source for their homework.Each week the theoretical presentation lasted for averagely 1 hour and 45 minutes.1 hour of that time was spent on the theoretical background of programming.15 minutes were spent on each language to explain how it was implemented.There were 2 mid term exams that had 2 theoretical questions,2 questions where you had to write code snippets and 2 mixed questions where you had to do both.If you passed the midterms you freed yourself from the theoretical part of the exam.

The laboratories included homework and there was a point system.The assistants had a lot of freedom on how to execute the laboratories.However this is how it was done with Java:
Homework was given one week in advance.But doing the homework was rewarding because the actual laboratories were rehashes of the homework with just minor changes to the code.And as such students who had finished the homework themselves were rewarded with more points.There was also an entrance quiz which consisted mostly of things from the homework and an exit quiz,each of the quizzes was worth 3 points.The actual laboratory was worth 3 points + 1 extra point for students who had done anextra task which was not a part of the homework and was decided by the assistant on the spot.At the end of the lab the assistant would give the students the code from the lab if they requested it by email.

The seminar brought the most points for the course.Basically the students would have to decide on a seminar topic and make a fully functional app.Each app has to cover at least 4 topics from the laboratories.Also the student has to make a documentation of the app and defend the seminar with his assistant.Once that is done,if the student has enough points in all areas of the course all he has to do is to take an oral exam with the professor and then bingo he has passed the course.





But


But you could say that the course I mentioned earlier is still not completely agnostic because you still only have a choice of 3 languages.Well this is how I would solve it:

More seminars/apps
And yes I agree this path would be very tough for the student.

Basically students would be presented with this option.If their wished language is too obscure to be included,the student should do 4-5 seminars/apps.Each one of those should be tied to several areas of theory and laboratory practice that the other students take part in.The student would still have the support of the professor who would be qualified to teach him all of the theory.The student would still have all the resources of his educational institution.And perhaps the professor could link the students to other assistants and professors who are not part of the course but happen to know the students desired programming language.Also the student would still have at least a very loose educational direction.

The evaluation of the seminar would then replace the laboratories.Since the students were freed from laboratories it is assumed they had enough time for the seminars.Once again I repeat,choosing this path might not be easy for a student,but I firmly believe this would improve the output of decent programmers from educational institutions.Also this would allow the institutions to measure the popularity of programming languages so they could tweak the course even further.

The end.