Month: August 2015

Gnome Classic desktop environment on Ubuntu

2015-08-23 Linux, Ubuntu, UI No comments

Introduction

I was tired of non-minimal and quite slow Unity desktop environment. Of course, I performed a few tricks to make Unity faster, but still I wasn’t satisfied enough. I checked out different desktop environments. I wanted to have clean, minimal and productive environment. I like top panel from Unity as well as HUD and many workspaces. The last thing is quite common among different desktop environments.

New desktop environment

I decided to choose Gnome classic. It’s fast, clean, minimal, works easily with Ubuntu, has top panel and is configurable.
My current desktop looks like this:

screenfetch-2015-08-18-11_00_51

Unfortunately, I don’t have HUD like in Unity, but after a few days I got used to that. I also turned off all animations and visual effects. Everything works smoothly and looks much better than Unity. In the current configuration I have: Z Shell, Oh-my-zsh, dmenu, Numix Theme and Numix Circle Icons. In addition, I have the same indicators, which I had earlier on Unity and they work fine. I just needed to adjust look of Spotify icon in top panel. Moreover, Gnome Pie was installed later as additional launcher and media controller.

Installation of Gnome Classic and Numix Theme

I’ve installed Gnome Classic as follows:

sudo apt-get install gnome-session-fallback

Then, I installed Gnome Tweak Tool and Unity Tweak Tool:

sudo apt-get install gnome-tweak-tool unity-tweak-tool

and Compiz Config Manager with plugins:

sudo apt-get install compizconfig-settings-manager compiz-plugins-extra

Please note: to enable alt+tab in gnome classic fallback, open the manager and navigate to window management and check application switcher (previously disabled).

After that I could install Numix icons and theme:

sudo add-apt-repository ppa:numix/ppa
sudo apt-get update
sudo apt-get install numix-gtk-theme numix-icon-theme numix-icon-theme-circle

I’ve set appropriate theme and icons via Gnome Tweak Tool. After reboot of the computer changes should be successfully applied.

Detailed information about configuration

If you’re interested in detailed configuration information, you can check out my dotfiles at: https://github.com/pwittchen/dotfiles and system configuration at: https://github.com/pwittchen/ubuntu-config.

To generate system information for the screenshot I used screenfetch script. I didn’t worked correctly for gnome-session-fallback, but I’ve made small contribution on GitHub and now it’s fine.

Wallpaper

You can find wallpaper from the screenshot at papers.co website.

Alternatives & Resources

I’ve spent some time on analyzing alternative desktop environments and Linux based operating systems, which looks good.
Below, you can find my collection of information and resources. Maybe some of them will be better for your specific needs.

Interesting Reddit channels:

Selected Linux based systems with interesting user interface:

Selected Linux window managers:

Recap

After switching from Unity to Gnome my desktop is much more better, faster and cleaner. After mastering popular shortcuts for managing programs, windows, workspaces, etc. we can work very efficiently. Gnome Classic is fine for me right now, but maybe other WM will be better for you. It depends on your personal preferences. I’m gonna use Gnome Classic for some time and maybe I’ll try other environments in the future. For sure I won’t go back to Unity if it don’t evolve.

Learning Android and being up to date

2015-08-22 Android, Java, Open source No comments

Recently a few people asked me, what are my methods for gathering knowledge and being up to date with all news connected with Android. I didn’t really think about that. I just grabbed all knowledge from a various places and then tried to use it in practice. I decided to sum everything up and create a collection of my knowledge resources. Of course, we are not able to use all of that every day, because it’s too much, but it’s good to know where we can find something interesting. Android is very dynamic mobile platform, which changes really fast. It’s hard to be up to date with all of new features and programming techniques. That’s why it’s worth to find places where we can gather interesting information. Below, I collected some resources, links and information, which I find useful for learning Android & Java and being up to date with Android development.

Podcasts

  • Fragmented Podcast – talks about building good software and becoming better Android developer – you can hear interviews with famous developers like Jake Wharton here

Videos

Collections of articles, issues & libraries

  • Android Weekly – free newsletter that helps us to stay cutting-edge with our Android Development
  • Android Arsenal – huge collection of categorized open-source Android libraries and tools
  • Slicedham.co – collection of engineering stories (not only about Android)

Blogs

Not all articles on the blogs below are connected with Android.

StackOverflow

We can browse interesting topics tagged with Android tag, read them and even try to solve some problems. It will allow us to learn something new or improve existing knowledge.

GitHub repositories

It’s worth to check open-source repositories of great companies and developers to see how smart people solve the problems.
Not all repositories of the companies and developers below are connected with Android, but most of them do.
Moreover, we can still learn a lot from various kinds of OS projects.

Companies

Organizations

Developers

We can also check trending Java repositories or trending repositories in general.

In addition, we can try to analyze source code of various repositories and try to contribute back to them. I guarantee, we’ll learn a lot. We can start with small steps and we don’t have to implement the most complicated features in the beginning.

Twitter

We can follow famous developers or companies. We can also check tags like: #AndroidDev, #Android or #Java and so on.

Experiments & open-source projects

We can create our own projects. We can publish our app on Google Play or create an open-source library on GitHub and let other people use it and review it. Then, we’ll be able to determine if our libraries are usable, code is clean, API is simple and documentation informative enough. In addition, other developers can report bugs or new issues, which will allow improve our projects and develop our programming and communication skills.

Other

Meetings, conferences, hackathons, etc.

Sometimes it’s good to go to a conference, meeting, etc. to talk with people and learn from them. We can take a look at the events around us, attend them or maybe present something. If there’s no events in our location, we can always organize one and ask others for help!

Books

It’s good to have strong basics. Not every book is universal and valuable over the time, but there’re a few fundamental positions for programmers worth reading like Clean Code, Effective Java, Java Concurrency in Practice & Test Driven Development: By Example. It’s an open list and we can always extend it with another position on our shelf.

What else?

Everyone has his or her own method of learning new things. If you know another interesting resources or methods, share them in comments below this article.

Android Marshmallow – API level 23

2015-08-17 Android No comments

Google recently released official Android 6.0 SDK & Final M Preview. New Android version is called Marshmallow.

android-marshmallow

Whether you like them straight out of the bag, roasted to a golden brown exterior with a molten center, or in fluff form, who doesn’t like marshmallows? We definitely like them! Since the launch of the M Developer Preview at Google I/O in May, we’ve enjoyed all of your participation and feedback. Today with the final Developer Preview update, we’re introducing the official Android 6.0 SDK and opening Google Play for publishing your apps that target the new API level 23 in Android Marshmallow.

Jamal Eason, Product Manager, Android

Read more at: http://android-developers.blogspot.com/2015/08/m-developer-preview-3-final-sdk.html

Introducing ReactiveNetwork

2015-08-10 Android, Open source, RxJava No comments

I’ve recently released ReactiveNetwork. It is an open-source Android library listening network connection state and change of the WiFi signal strength with RxJava Observables. It’s a successor of Network Events library rewritten with Reactive Programming approach.

Library is compatible with RxJava 1.0.+ and RxAndroid 1.0.+ and uses them under the hood. Min Android SDK version is 9.
JavaDoc can be found at: http://pwittchen.github.io/ReactiveNetwork.
Repository is available at: https://github.com/pwittchen/ReactiveNetwork.

This library is much simpler and easier to use than NetworkEvents. Even code-base is much smaller, but we have to remember that it utilizes powerful RxJava and RxAndroid. RxJava hase huge API and gives a lot of possibilities. That’s why I was able to obtain desired result with fewer lines of code.

Basic library usage is quite simple. E.g if we want to monitor ConnectivityStatus (WIFI_CONNECTED, MOBILE_CONNECTED or OFFLINE), we can create the following subscription, which is quite familiar for software developers who already know RxJava:

When we want to monitor available WiFi Access Points and we want to get fresh list of them whenever strength of the WiFi Access Points signal changes (e.g. when we are moving with a mobile device around), we can use the following code snippet:

If you want to use ReactiveNetwork in your project, add the following dependency to your build.gradle file:

dependencies {
  compile 'com.github.pwittchen:reactivenetwork:0.0.2'
}

Find more in the GitHub repository of the project at: https://github.com/pwittchen/ReactiveNetwork.

It’s worth mentioning that this library was featured on Android Arsenal, Android Weekly and Android Weekly China websites.

I hope you will find it useful and you will make your apps more reactive!
Feel free to fork the library. Any feedback is welcome as usual.

Releasing Prefser 2.0.0

2015-08-06 Android, Open source No comments

I’ve recently released Prefser library v. 2.0.0.
Prefser is a wrapper for Android SharedPreferences with object serialization and RxJava Observables.
This update couldn’t be done without help of awesome open-source community and people who reported new issues and created pull requests.
Thanks for that! A lot of issues related to RxJava was fixed. Moreover, now we can store and retrieve lists of objects of any type with Prefser.
Examples of library usage can be found in README.md file and in unit tests covering 96% of the code.

Below, you can find release notes for this version of the library:

  • fixed not keeping reference to listener when Observable instance is reused
  • fixed not unregistering listener, which causes onNext() even after unsubscribe()
  • fixed possible missed update with getAndObserve()
  • removed observe(sharedPreferences) method – backward incompatible
  • changed observeDefaultPreferences() method name to observePreferences()backward incompatible
  • added TypeToken and use of generics for interfaces
  • added possibility to store Lists of different types of data including custom objects
  • added more unit tests
  • updated test dependencies
  • updated JavaDoc available at http://pwittchen.github.io/prefser/

Feel free to fork the project or report new issues! Any kind of feedback is warmly welcome.

Geary – neat e-mail client for Linux

2015-08-01 Linux, Ubuntu No comments

Overview

geary-home1
I was using web interfaces for e-mail for a long time, but I wanted to give a try a desktop clients for Linux. I was searching for a quite simple solution with almost zero configuration, which I can use for my private and work e-mail accounts. Geary seems to be quite good choice. It is clean, easy to use and pretty neat e-mail client for Linux. It integrates with Unity on Ubuntu and display system notifications informing about new message. Unfortunately, we need it running in order to see notifications, which is small drawback. Nevertheless it works quite good, so I’m going to give it a try.

geary-10-750x404

Install it with the following command:

sudo apt-get install geary

Pros & cons

Here is my list of pros and cons of this software.

Pros

  • almost zero configuration
  • clean & neat interface
  • multiple e-mail accounts
  • integration with the system and notifications informing about new messages
  • recipient suggestions without importing contacts
  • limiting range of downloaded messages – e.g. we can download everything or just messages from last 2 weeks
  • it’s open-source: https://github.com/GNOME/geary – as we can see on GitHub, it’s actively developed
  • it’s free

Cons

  • almost zero configuration, which may be drawback for some people 😉
  • recipient suggestions does not work with all contacts (I suppose it may be connected with range of downloaded messages)
  • notifications works only when application is running
  • no contact list
  • no calendar available

Interesting fact

It’s written in Vala language.

Recap

Not all mentioned cons are really bad. As it’s just an e-mail client, it doesn’t need to have contact list or calendar. It’s additional functionality, but there may be some problems while working with systems like MS Exchange or something similar where user need to confirm presence on appointment at work or something like that. To sum up, regardless of a few drawbacks, I can tell that Geary is really nice piece of software, which can be used on daily basis by people who like simple solutions.