Friday, January 31, 2014

Specializations at Coursera - new quality among MOOCs?

I am big fan of MOOCs. Idea of preparing lectures, quizzes and assessments for people to be accessed through web browser, mostly for free is greatly generous. And its not just idea. There are foundations, universities and companies which are actually doing this. With bigger or smaller success but still. Currently my favorite site which is offering MOOCs is coursera.org.

How are MOOC working? Lets assume for example, that you want to learn Python. You maybe have some books, you maybe read some examples across web, and wrote some simple script. But you also might feel kind of lost. You don't know what parts are important, and maybe you don't have idea how to change newly acquired knowledge into practice. And here comes MOOCs. MOOC is Massive Online Open Courseware. It means that, if you find interesting MOOC, it will provide series of lectures (often video lectures), some simple quizzes after each part of material and bigger homework after larger segment. At the end, there usually is exam, maybe project or something similar, designed to test learned skills. So, back to Python. If you check site mentioned earlier, and answer the question "What would you like to learn about?" with "python" you will find three upcoming courses at the day this post was written. Those are: "An Introduction to Interactive Programming in Python", "High Performance Scientific Computing" and "Learn to Program: The Fundamentals", prepared by Rice University, University of Washington and University of Toronto. All those courses are free, and represents different approaches to topic with different difficulties and time frames.

But what to do if we want to learn something more deeper? We can search for complementary MOOCs over many different sites. There is an problem - often complementary course offers large part of it as introduction which might double the information that you already learned, thus lead to waste of time. As solution to this problem, Coursera prepared "Specializations". Specializations are series of courses which are covering bigger ideas. For me, their recent offer which is dedicated to Data Science is perfect. I'm interesting in data science since some time, but just recently I started to look for related MOOCs. And I found mentioned specialization. Don't worry about prices listed there. Those prices are for official printed and signed certificate of accomplishment issued by university and Coursera. If you don't need such certificate, you may enter those courses for free, and if you complete them, you will receive simple free PDF version. Not to mention knowledge ;)

I'm very excited by this idea, and I hope it will be widely adopted by other sites offering MOOCs. Damn, I actually can't imagine, how general learning will look like in twenty years form now :)

Tuesday, January 14, 2014

Breaking the Prism #001 - Why do we need custom Android ROMs?

Currently, we have three major operating systems for smartphones: iOS, Android and Windows Phone. We also have BlackBerry and Firefox OS, but I'm not considering them as big players for purpose of this article. Windows and iOS are strictly proprietary systems and Android is generally open source with some additional problematic bonuses.

Lets start with Windows Phone and iOS. Those both systems are closely related to desktop operating systems Windows and OS X. All of those systems (mobile and desktop), are closed source and proprietary. Basically it means, that when you are using them, you are believing that companies working behind them, are honest, technically almost perfect and very responsive with bug fixing. You have to believe, because there is no cheap/legal way to examine and audit code by you or independent experts or communities. But should you believe?

I have pretty big issues with trust to companies. Especially when it comes to them handling my data and personal information. And a smartphone is a great storage and generator for such information. E-mails, browsing history, calls history, SMS, instant messaging, photos, geoinformation, videos, and generic files. Combined with rumors that NSA or other agencies are working with companies to put camera or other backdoors into such devices I have no trust for them.

Android from Google lays half way between trust and no trust scale. Core Android system is based on Linux kernel with code written in Java, C and C++. It has open source license that allows to examine code and add own modifications. The problem is that when you are buying device with Android, you are also receiving additional software packages with questionable behavior.

By questionable behavior I mean situation, that we don't know what each part of software is doing in background, where it is storing data and if it sends data to third parties. I call this type of programs "crapware". Usually it is added by phone manufacturer, sometimes by telecom operator, and no one knows how often by government agencies. Also, Google applications which are coming often with Android are not wanted by everyone because of privacy concerns.

Fortunately, often there is possibility to easily switch to clean Android system. And I don't mean compilation and installation form sources. I mean using custom ROMs dedicated to this purpose. Currently there are at lest two ROMs which are aspiring to do it in good way. Replicant and CyanogenMod. 

Replicant project aims to provide complete clean Android experience and replacement of proprietary drivers for various hardware components. CyanogenMod on the other hand tries to build optimally working, clean and very customizable Android system. By looking at those projects from free software perspective, Replicant wins. But since not everything working great on this ROM, practical approach shows that CyanogenMod might be better for non technical end user.

I think, that if your Android phone or tablet is officially supported by Replicant or CyanogenMod you should strongly consider switching to them. You can still install every crapware you like later ;). If your device is not officially supported, you can still try to find unofficial ports. For example, I'm using SmoothieJB based on CyanogenMod for my SGS Plus.

For today, if I would consider buying phone, I probably would buy Galaxy Nexus since it has good support by both mentioned ROMs. In next articles I will try to show alternatives to popular proprietary Android apps so we can try to fight with biggest surveillance programs since ever. Stay vigilant.