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.
Saturday, 6 June 2015
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.
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.
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.
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.
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.
Labels:
android,
EEE,
Embrace,
Extend,
Extinguish,
microsoft,
open source
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.
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.
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 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.
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.
Subscribe to:
Posts (Atom)





