Uncategorized

The 2017 – OpenSource Development Laptop

The begin of …

Its 2017, Long after this post could be written, I suffered long days and nights on Windows on the 90’s, why not, almost all possible Windows combinations of it … Windows 3.11, Windows 95, Windows 2000, Windows XP, Windows NT …

Bill-Gates-Will-Teach-You-How-to-Count-Windows-10-Meme

Oh, it was a hell of a pain, it was proprietary, expensive and, well it was Windows …

How nice it was when Windows suggested for us to look online for solutions … exactly when the internet was not working …

The middle age …

Until one day I decided it was about time to kill the old Windows and get myself a brand new fancy Macbook… I had them all, Macs 10.4, 10.5, 10.6, 10.7, 10.8, 10.9 …

Until one day …

Latest release: Macbook Pro 13-inch
macpro2017

Specs:

  • Processor: 2,9‑GHz dual‑core Intel Core i5‑processor
    Memory: 16 GB DDR3 2133‑MHz,
  • HD: SSD van 512 GB1
    Graphics Card: Intel Iris Graphics 550

Price: 2.439,00 euros.

But … Its 2017, all the other vendors are shipping notebooks with 64GB, i7 or Xeon with 8 cores processor and fully configurable, but Macbook Pro, comes locked, sealed …can touch it .. its just fancy, the hardware is capped.

So I decided it was time …

2weeks

The Macbook Pro is dead, long live the king!

Linux on a High-end Laptop, is it worth it ?

Yes it does, and to confirm that I took the challenge to buy two new laptops.

I did long research on the web to find the best price for my money, because I have a development team, is important that all the developers have proper computers to be able to process BigData computations with really memory consuming frameworks for Map-Reduce and several other databases that the projects this days are demanding …

After researching for months, I decided with two good machines: Lenovo P50 and Dell Skylake Precision.

Lenovo Thinkpad P50 with Ubuntu 16.04

lenovo-p50-keyboard

Specs:

Intel Core i7-6820HQ 2.7 GHz @ 2.7 GHz (Intel Core i7) – 8 cores.
Graphics adapter NVIDIA Quadro M2000M – 4096 MB, Core: 1136 MHz, Memory: 1252 MHz, GDDR5, ForceWare 354.25, Optimus

64GB DDR4 Ram Corsair.

Price: 2.400 euros.

Installing Ubuntu 16.04 on it was easy but I found after the purchase a very unpleasant defect: External Display issue on P50 Linux

It took me days to figure a way out, in the end I decided to install Kubuntu …

 

Lenovo Thinkpad P50 with Kubuntu 16.04 … making your High-end Laptop friendly

Kubuntu is an operating system built by a worldwide community of developers, testers, supporters and translators. Kubuntu is a free, complete, and open-source alternative to Windows and Mac OS X which contains everything you need to work, play or share. Check out the Feature Tour if you would like to learn more!

Screenshot_20170521_185641

Kubuntu 16.04.2 LTS

Download Kubuntu 16.04.2 LTS from http://www.kubuntu.org/alternative-downloads 

Download and Install the ISO file into the pendrive using UNetbootin https://unetbootin.github.io/ and boot from it.

UNebooin

Boot your computer from the pendrive and after installing Kubuntu, Open System Settings, Display and Monitor and configure your second monitor:

 There you go, ready for Real Open Source Software Development with two screens.
Now the alternative for Lenovo on the other side of the coin behaves much better with Ubuntu 16.04:

Dell Skylake Precision 5520 with Ubuntu 16.04

dell-laptop-100618568-large

Specs: Intel Core i7-6700HQ 2.60GHz, GeForce GTX 960M/PCIe/SSE2

16GB DDR4 Ram Corsair.

500 GB Generic HDD.

Price: 2.100

Easy to install as well, in 30 minutes I had Ubuntu running with two monitors and no issues so far, making Dell Skylake the best buy for Ubuntu 16.04.

 

 

except after I put it for sleep and after awake … Suddenly all my dreams went apart, and the UI started to behave buggy 😦

 

Problem with Nvidia drivers

nviidadefect

It took me few days to figure a way out, I was just without time and restart the computer seemed to work, so oh … I happened to have this defect for two months, until one day I had enough and decided it was time for a proper fix.

How to fix Strange window borders after waking computer from sleep mode on Ubuntu 16.04

nvidiadefect

This fix is already packaged, but unfortunately is not yet available from the standard repositories, but you can easily get it from a PPA and replace your current driver with it by running the following commands:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt purge nvidia*
sudo apt install nvidia-381

After you finished, reboot and the issue should be gone.

Conclusion:

Yes, is time for OpenSource software development … There is proper hardware and proper Software for doing it so, thats I’m more than sure by now.

10 reasons why you should get a High-end Laptop with Linux for your next workstation: 

1. Ubuntu is user-friendly
2. Ubuntu is free
3. It’s secure. Say no to anti-virus.
4. It supported on High-End notebooks
5. Tons of Ubuntu flavors, [SOLVED] Kubuntu enabled Thinkpad P50 to run Linux with two monitors.
6. Supportive Ubuntu community, all this answers could not be provided without the community.
7. Low system requirements, it can run from the low to the high-end.
8. Tons of free software in Software Center
9. Improved compatibility, included drivers, [SOLVED] Dell Skylake Precision 5520 NVidia borders issue.
10. It’s open source

 

The long dark ages of vendor locking are gone, today is easy and simple to get your new computer with Ubuntu 16.04.

 

Get Ubuntu/Kubuntu on your next Notebook and enjoy the power of having 64GB DDR4 RAM.

 

Why not give it a try ?

Happy coding to everyone.

Uncategorized

How to restore KDE Plasma without restarting the computer

Hi,

If you are developing on KDE  for a while, you may experience that your KDE Plasma desktop environment will sometimes stop responding properly, or it will start taking a long time to do anything.

kde-plasma-5.9-wallpaper-750x469

Some people will just take the hit and reboot computer, I don’t like restarting … so, I decided it was about time to properly document the steps I have to do once in a while and use this for my own understanding … and maybe, help someone else.

Screenshot_20170514_112630

How To Restart KDE Plasma on Kubuntu

  • Open a terminal and run the following command:
kquitapp5 plasmashell && kstart plasmashell
  • The output for the command should be something like this:
  • $ kquitapp5 plasmashell && kstart plasmashell
    kstart(26096) main: Omitting both --window and --windowclass arguments is not recommended

Don’t worry about the warning, it should work with no problems.

You may experience that this shell after running the command, will be printing the logs of plasma for you, something like this is expected to happen:

$ org.kde.plasma.pulseaudio: No object for name "alsa_output.pci-0000_00_1f.3.analog-stereo"
org.kde.plasma.pulseaudio: No object for name "alsa_output.pci-0000_00_1f.3.analog-stereo"
org.kde.plasma.pulseaudio: No object for name "alsa_input.pci-0000_00_1f.3.analog-stereo"
libkcups: Cancel-Subscription last error: 0 successful-ok
file:///usr/share/plasma/shells/org.kde.plasma.desktop/contents/views/Panel.qml:83: TypeError: Cannot read property 'Layout' of null
Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
file:///usr/share/plasma/plasmoids/org.kde.plasma.digitalclock/contents/ui/DigitalClock.qml:443:5: QML Text: Cannot anchor to a null item.
Notifications service registered
libkcups: Get-Jobs last error: 0 successful-ok
libkcups: Get-Jobs last error: 0 successful-ok
libkcups: Create-Printer-Subscriptions last error: 0 successful-ok
Plasma Shell startup completed
libkcups: 0
libkcups: 0
Both point size and pixel size set. Using pixel size.
networkmanager-qt: void NetworkManager::NetworkManagerPrivate::propertiesChanged(const QVariantMap&) Unhandled property "AllDevices"
networkmanager-qt: void NetworkManager::NetworkManagerPrivate::propertiesChanged(const QVariantMap&) Unhandled property "Devices"
networkmanager-qt: void NetworkManager::NetworkManagerPrivate::propertiesChanged(const QVariantMap&) Unhandled property "GlobalDnsConfiguration"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "S390Subchannels"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
ktp-common-internals: Current presence changed
ktp-common-internals: Current presence changed



Other variant for the error:

libkcups: Get-Jobs last error: 0 successful-ok
 libkcups: 0
 libkcups: Get-Jobs last error: 0 successful-ok
 libkcups: 0
 QXcbConnection: XCB error: 2 (BadValue), sequence: 762, resource id: 20971554, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 767, resource id: 20971552, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 772, resource id: 20971550, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 777, resource id: 20971549, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 782, resource id: 20971548, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 787, resource id: 20971547, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 792, resource id: 20971545, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 797, resource id: 20971544, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 802, resource id: 20971543, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 807, resource id: 20971542, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 812, resource id: 20971541, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 817, resource id: 20971540, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 822, resource id: 20971539, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 827, resource id: 20971538, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 832, resource id: 20971536, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 837, resource id: 20971535, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 842, resource id: 20971534, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 847, resource id: 20971752, major code: 142 (Unknown), minor code: 3
 QXcbConnection: XCB error: 2 (BadValue), sequence: 852, resource id: 20971761, major code: 142 (Unknown), minor code: 3
 org.kde.plasma.pulseaudio: No object for name "alsa_output.pci-0000_00_1f.3.analog-stereo"
 org.kde.plasma.pulseaudio: No object for name "alsa_output.pci-0000_00_1f.3.analog-stereo"
 org.kde.plasma.pulseaudio: No object for name "alsa_input.pci-0000_00_1f.3.analog-stereo"

 

Restarting KDE Plasma common errors

It maybe that the plasma will just refuse to die and it will throw rocks back to you:

$ kquitapp5 plasmashell && kstart plasmashell
 "Quitting application plasmashell failed. Error reported was:\n\n org.freedesktop.DBus.Error.UnknownObject : No such object path '/MainApplication'"

 

$ kquitapp5 plasmashell | true && kstart plasmashell | true "Quitting application plasmashell failed. Error reported was:\n\n org.freedesktop.DBus.Error.NoReply : Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken." kstart(577) main: Omitting both --window and --windowclass arguments is not recommended

 

Restarting KDE Plasma ignoring errors

This command will ignore the error exit from the first command and continue processing the start even if the kquitapp5 fails to execute.

 

$ kquitapp5 plasmashell | true && kstart plasmashell | true
  ..
  ..
 org.kde.plasma.pulseaudio: No object for name "alsa_output.pci-0000_00_1f.3.analog-stereo"
 org.kde.plasma.pulseaudio: No object for name "alsa_output.pci-0000_00_1f.3.analog-stereo"
 org.kde.plasma.pulseaudio: No object for name "alsa_input.pci-0000_00_1f.3.analog-stereo"
 kstart(6920) main: Omitting both --window and --windowclass arguments is not recommended
 libkcups: Cancel-Subscription last error: 0 successful-ok
 libkcups: Create-Printer-Subscriptions last error: 0 successful-ok
 libkcups: Cancel-Subscription last error: 0 successful-ok

$ kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
file:///usr/share/plasma/shells/org.kde.plasma.desktop/contents/views/Panel.qml:83: TypeError: Cannot read property 'Layout' of null
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)
Trying to use rootObject before initialization is completed, whilst using setInitializationDelayed. Forcing completion
file:///usr/share/plasma/plasmoids/org.kde.plasma.digitalclock/contents/ui/DigitalClock.qml:443:5: QML Text: Cannot anchor to a null item.
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
Trying to use rootObject before initialization is completed, whilst using setInitializationDelayed. Forcing completion
Notifications service registered
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
libkcups: Get-Jobs last error: 0 successful-ok
libkcups: Get-Jobs last error: 0 successful-ok
libkcups: Create-Printer-Subscriptions last error: 0 successful-ok
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/ScrollView.qml:350: TypeError: Cannot read property 'padding' of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/ScrollView.qml:349: TypeError: Cannot read property 'padding' of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/ScrollView.qml:348: TypeError: Cannot read property 'padding' of null
file:///usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/ScrollView.qml:347: TypeError: Cannot read property 'padding' of null
Plasma Shell startup completed
libkcups: 0
libkcups: 0
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
Both point size and pixel size set. Using pixel size.
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
networkmanager-qt: void NetworkManager::NetworkManagerPrivate::propertiesChanged(const QVariantMap&) Unhandled property "AllDevices"
networkmanager-qt: void NetworkManager::NetworkManagerPrivate::propertiesChanged(const QVariantMap&) Unhandled property "Devices"
networkmanager-qt: void NetworkManager::NetworkManagerPrivate::propertiesChanged(const QVariantMap&) Unhandled property "GlobalDnsConfiguration"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "S390Subchannels"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "LldpNeighbors"
networkmanager-qt: virtual void NetworkManager::DevicePrivate::propertyChanged(const QString&, const QVariant&) Unhandled property "Real"
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
kf5.kcoreaddons.desktopparser: Could not locate service type file kservicetypes5/plasma-popupapplet.desktop, tried ("/home/u/.local/share", "/usr/share/plasma", "/usr/local/share", "/usr/share", "/var/lib/snapd/desktop")
ktp-common-internals: Current presence changed
ktp-common-internals: Current presence changed

 


Restarting KDE Plasma by Killing plasmashell and then restart it in the background (ignore output).

$ killall plasmashell && plasmashell > /dev/null 2>&1 & disown
[1] 2054

 

Restarting KDE Plasma by running kquitapp5 and then restart it in the background.

 kquitapp5 plasmashell && plasmashell &

 

 

I hope it helps.

Happy open-source coding to everyone! 🙂

Uncategorized

Installing Google App Engine gcloud on Linux

If followed the Google recommended steps described on Google for installing the Google App Engine SDK, chances are that it failed just after when you tried to install kubectl or something else like goapp or the java cmds. If you have found this post on google search, chances are that you are stuck with the error:

ERROR: (gcloud.components.update) The component manager is disabled for this installation\

 

If you have followed the installation instructions for  Ubuntu (and others) Linux distributions come with the google cloud SDK installed through the local package manager, but is a trap, and doesn’t contain everything you will need to get things done.

kubectl is missing on the default instalation, together with many others.

$ gcloud components list

Your current Cloud SDK version is: 154.0.1
The latest available version is: 154.0.1

┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Components │
├───────────────┬──────────────────────────────────────────────────────┬──────────────────────────┬───────────┤
│ Status │ Name │ ID │ Size │
├───────────────┼──────────────────────────────────────────────────────┼──────────────────────────┼───────────┤
│ Not Installed │ App Engine Go Extensions │ app-engine-go │ 47.9 MiB │
│ Not Installed │ Bigtable Command Line Tool │ cbt │ 3.9 MiB │
│ Not Installed │ Cloud Datalab Command Line Tool │ datalab │ < 1 MiB │
│ Not Installed │ Cloud Datastore Emulator │ cloud-datastore-emulator │ 15.4 MiB │
│ Not Installed │ Cloud Datastore Emulator (Legacy) │ gcd-emulator │ 38.1 MiB │
│ Not Installed │ Cloud Pub/Sub Emulator │ pubsub-emulator │ 21.0 MiB │
│ Not Installed │ Emulator Reverse Proxy │ emulator-reverse-proxy │ 14.5 MiB │
│ Not Installed │ Google Container Registry's Docker credential helper │ docker-credential-gcr │ 3.4 MiB │
│ Not Installed │ gcloud Alpha Commands │ alpha │ < 1 MiB │
│ Not Installed │ gcloud Beta Commands │ beta │ < 1 MiB │
│ Not Installed │ gcloud app Java Extensions │ app-engine-java │ 128.6 MiB │
│ Not Installed │ gcloud app Python Extensions │ app-engine-python │ 6.1 MiB │
│ Not Installed │ kubectl │ kubectl │ 14.9 MiB │
│ Installed │ BigQuery Command Line Tool │ bq │ < 1 MiB │
│ Installed │ Cloud SDK Core Libraries │ core │ 6.0 MiB │
│ Installed │ Cloud Storage Command Line Tool │ gsutil │ 2.9 MiB │
│ Installed │ Default set of gcloud commands │ gcloud │ │
└───────────────┴──────────────────────────────────────────────────────┴──────────────────────────┴───────────┘
To install or remove components at your current SDK version [154.0.1], run:
 $ gcloud components install COMPONENT_ID
 $ gcloud components remove COMPONENT_ID

To update your SDK installation to the latest version [154.0.1], run:
 $ gcloud components update

 

And if you try to use the recommended way to install anything, it will fail and argue something with very little sense like: ERROR: (gcloud.components.update) The component manager is disabled for this installation

 

In order to get this sorted out, the solution is fairly easy. You will have to remove the google recommended way of installing the Google Cloud SDK  and proceed with the following steps:

sudo apt-get update
sudo apt-get remove google-cloud-sdk
curl https://sdk.cloud.google.com | bash
exec -l $SHELL
gcloud init
gcloud components list

Optionally you can run the one liner command :

sudo apt-get remove google-cloud-sdk && curl -sSL https://sdk.cloud.google.com | bash -

 

After installing and initializing the gcloud, you are finally able to install and Get yourself a full-blown Cloud SDK installation:

$ gcloud components install kubectl


Your current Cloud SDK version is: 154.0.1
Installing components from version: 154.0.1

┌──────────────────────────────────────────────┐
│ These components will be installed. │
├─────────────────────────┬─────────┬──────────┤
│ Name │ Version │ Size │
├─────────────────────────┼─────────┼──────────┤
│ kubectl │ │ │
│ kubectl (Linux, x86_64) │ 1.6.2 │ 14.9 MiB │
└─────────────────────────┴─────────┴──────────┘

For the latest full release notes, please visit:
 https://cloud.google.com/sdk/release_notes

Do you want to continue (Y/n)? y

╔════════════════════════════════════════════════════════════╗
╠═ Creating update staging area ═╣
╠════════════════════════════════════════════════════════════╣
╠═ Installing: kubectl ═╣
╠════════════════════════════════════════════════════════════╣
╠═ Installing: kubectl (Linux, x86_64) ═╣
╠════════════════════════════════════════════════════════════╣
╠═ Creating backup and activating new installation ═╣
╚════════════════════════════════════════════════════════════╝

Performing post processing steps...done. 

Update done

 

Installing Google App Engine for Golang

gcloud components install app-engine-go


Your current Cloud SDK version is: 154.0.1
Installing components from version: 154.0.1

┌────────────────────────────────────────────────────┐
│ These components will be installed. │
├───────────────────────────────┬─────────┬──────────┤
│ Name │ Version │ Size │
├───────────────────────────────┼─────────┼──────────┤
│ App Engine Go (Linux, x86_64) │ 1.9.50 │ 47.9 MiB │
│ App Engine Go Extensions │ │ │
│ gcloud app Python Extensions │ 1.9.52 │ 6.1 MiB │
└───────────────────────────────┴─────────┴──────────┘

For the latest full release notes, please visit:
 https://cloud.google.com/sdk/release_notes

Do you want to continue (Y/n)? y

╔════════════════════════════════════════════════════════════╗
╠═ Creating update staging area ═╣
╠════════════════════════════════════════════════════════════╣
╠═ Installing: App Engine Go (Linux, x86_64) ═╣
╠════════════════════════════════════════════════════════════╣
╠═ Installing: App Engine Go Extensions ═╣
╠════════════════════════════════════════════════════════════╣
╠═ Installing: gcloud app Python Extensions ═╣
╠════════════════════════════════════════════════════════════╣
╠═ Creating backup and activating new installation ═╣
╚════════════════════════════════════════════════════════════╝

Performing post processing steps...done. 

Update done!

 

Installing Google App Engine for Java

$ gcloud components install app-engine-java


Your current Cloud SDK version is: 154.0.1
Installing components from version: 154.0.1

┌──────────────────────────────────────────────────┐
│ These components will be installed. │
├────────────────────────────┬─────────┬───────────┤
│ Name │ Version │ Size │
├────────────────────────────┼─────────┼───────────┤
│ gcloud app Java Extensions │ 1.9.51 │ 128.6 MiB │
└────────────────────────────┴─────────┴───────────┘

For the latest full release notes, please visit:
 https://cloud.google.com/sdk/release_notes

Do you want to continue (Y/n)? y

╔════════════════════════════════════════════════════════════╗
╠═ Creating update staging area ═╣
╠════════════════════════════════════════════════════════════╣
╠═ Installing: gcloud app Java Extensions ═╣
╠════════════════════════════════════════════════════════════╣
╠═ Creating backup and activating new installation ═╣
╚════════════════════════════════════════════════════════════╝

Performing post processing steps...done. 

Update done!

 

I hope it helps.

Cheers.

linux, rethinkdb, Uncategorized

Running a RethinkDB Proxy as Daemon

 

In this article we are going to learn the commands and steps to have a install daemonize package on Ubuntu 16.10,Ubuntu 14.04, CentOS 6, CentOS 7, Fedora, etc …

Quick Install Daemonize:

wget https://github.com/bmc/daemonize/archive/release-1.7.7.tar.gz
tar -xvzf release-1.7.7.tar.gz
cd daemonize-release-1.7.7/
sh configure
make
sudo make install

 

Running RethinkDB Proxy with Daemonize:

daemonize -E BUILD_ID=dontKillMe -p /opt/rethinkdb_proxy.pid \ 
/usr/bin/rethinkdb proxy --join yourcluster:29015 \
--http-port 8095 --bind all

 

Check all the other usages for daemonize:

# daemonize
daemonize, version 1.7.7
Usage: daemonize [OPTIONS] path [arg] ...

OPTIONS

-a Append to, instead of overwriting, output files. Ignored
 unless -e and/or -o are specified.
-c <dir> Set daemon's working directory to <dir>.
-e <stderr> Send daemon's stderr to file <stderr>, instead of /dev/null.
-E var=value Pass environment setting to daemon. May appear multiple times.
-o <stdout> Send daemon's stdout to file <stdout>, instead of /dev/null.
-p <pidfile> Save PID to <pidfile>.
-u <user> Run daemon as user <user>. Requires invocation as root.
-l <lockfile> Single-instance checking using lockfile <lockfile>.
-v Issue verbose messages to stdout while daemonizing.

 

Cheers.

Uncategorized

Developers don’t leave jobs, They leave their managers

dilbert20069158902091

Manage developers is not an easy task, and its really hard to find a good manager this days.
And the market is really overloaded with recruiters that will do EVERYTHING then can and even what they can’t to get your best developer out to another company, and sometimes they don’t even need to offer more money, are you wondering why??

Is hard is to hire good people but is even harder is to keep them on the job. Today’s companies and big brands are trying to hire developers for a permanent role for YEARS and they can’t find anyone good, I mean, good developers are not even applying for the roles. :O

Do you wonder why? I will tell you this, from the point of view of a Developer, what are the worst things you can do to your good people and how to avoid having your good people packing…

Believe me or not, All that’s required is a new perspective and some effort on the manager’s part.

1. Recognize Contributions and Reward Good Work

Its easy to underestimate the power of the high five, or the thank you very much, or the “great job mate, I’m really proud of working with you”. Top performers are intrinsically motivated, but when you work hard, what you really want may be just a “Well done mate, I really like working with you”. Everyone likes cheering, especially those who work hard and give all in.
Managers should communicate with their people to find out what makes them feel good and then to reward them for a job well done.
BUT Make sure you recognize the right people, recognize the bad people instead of the good ones, is a SERIOUS mistake.

2. Care about your Employee

Almost everyone that I know will instantaneously leave their jobs because of their relationship with their management. Smart companies make sure that managers knows how to be HUMANS and balance professional life with personal life. I mean, “take that grumpy face out and wear some smile for god sake”.
Celebrate an employee’s success, empathize with those going through hard times, managers who fail to care will always have high turnover rates. People will leave. It’s impossible to work for someone eight-plus hours a day and be asked to stay extra or over the weekend when your boss is an grumpy cat.

3. Don’t overwork People

I know, is really tempting to work your best people hard. Don’t fall into this trap.
A Stanford research shows that productivity declines sharply when the workweek exceeds 50 hours, and productivity drops off so much after 55 hours that you don’t get anything out of working more.
Overworking good employees is easy to do, but it just makes them feel as if they’re being punished for great performance and is counterproductive. Just think, If you want people to work harder, you need to give something back, increase their status, or pay rise. Nobody will stay if their job suffocates them. Get that best developer and give him a raise, a promotion or a title-changes. If you simply increase workload because people are talented, without changing a thing, they will leave you, there are TONS of recruitment agencies hunting people down, and for a developer to move a job this days is as easy as going out for a beer.

4. Honor your word.

Making promises to people is dangerous when you don’t mean it. If you say something you better do it. Or don’t say a word. Otherwise you may be watching your good developer walking out the door. Sad but true. Instead, if you uphold a commitment, you grow in respect and you prove yourself to be trustworthy and honorable. But when you disregard your commitment is just disrespectful. After all, if the boss doesn’t honor his or her commitments, why should I ?
“A leader leads by example, not by force.” Sun Tzu.

5. Hire a bad developer / someone who don’t work hard

If you are working in an environment where you are the smartest person, you are in the wrong company. I mean, everyone knows it.
Good and hard-working professionals want to work with like-minded professionals. When managers don’t do the hard work of hiring good people, it’s hell-like for those who stuck working alongside them. Promoting the wrong people is even worse. It’s a massive insult. No wonder it makes good people leave.

6. Let People Pursue Their Dreams

Talented employees are passionate, just like evangelists. Providing opportunities for them to pursue their passions improves their productivity and satisfaction. Its easy to think as a bad manager and force people to work within a little box, fearing that productivity will decline if they let people expand their focus and pursue their passions.
This fear is just not true, studies show that people who are able to pursue their passions at work experience flow, a euphoric state of mind that is five times more productive than those who don’t pursue their dreams. So, dream on with your developers, let them fly and give them guidance!

7. Help them to Develop new Skills

The most talented employees want to develop new skills, so that they can take up new challenges, your job as a Manager is to keep it coming, get them exiting things to do, If you don’t, your best people will grow bored and leave, believe me.
What is most impressive about this topic is: When I ask a manager their inattention to employees, I often hear the excuse, using words such as “trust,” “autonomy,” and “empowerment.” This is bullshit. Good managers manage, no matter how talented the employee. Pay attention on what people are working on be constantly listening and PLEASE give feedback. Management may have a beginning, but it certainly has no end. When you have a talented employee, it’s up to you to keep him exited and helping him to improve & expand their skill set.

8. Never fail to Engage improvements

The most talented employees seek to improve everything they see or work with. Promote night-hacking’s, challenges, games, algorithms and rewards. If you take away their ability to change and improve things because you’re not comfortable with it ? this makes them hate their jobs, really do. Failing to catch up on this not only limits them, it limits you.

9. Never fail to challenge people with their skills

Great managers challenge, they push but not too much. Instead of setting mundane, incremental goals, play withy lofty goals that push people out of their comfort zones. You have to do everything in your power to help them succeed. When talented and intelligent people find themselves doing things that are too easy or boring, they seek other jobs and they will walk out that door.

I hope this may help you to avoid crying over spilt milk, take of that grumpy face, start smiling, learn something technical, get closer to your developers, learn, go and do things with them, be part of the team and you will be rewarded with excellent professionals, avoid contact, behave as an asshole and you will be left with the as-slickers, the decision is up to you.

“Victorious warriors win first and then go to war, while defeated warriors go to war first and then seek to win.” Sun Tzu

Uncategorized

Google creates a new parent company called Alphabet

Google announced late Yesterday, that it is creating a new parent company called Alphabet, which will be run by its two founders, Larry Page and Sergey Brin.

company-products

No, this does not appear to be an April Fool’s joke o/
They really created a company called Alphabet, that looks exactly like the image above, all the google products may one day full-fill the whole alphabet ? no one knows, but one thing we know, The operational change may help establish Google (or Alphabet) as an alternate version of Berkshire Hathaway, the portfolio of longterm businesses and investments run by famed investor Warren Buffett.

“Our company is operating well today, but we think we can make it cleaner and more accountable,”
“So we are creating a new company, called Alphabet. I am really excited to be running Alphabet as CEO with help from my capable partner, Sergey, as President.”

In essence, this allows Google to build a more robust portfolio of businesses, each with its own dedicated CEO, under the Alphabet umbrella.

Alphabet will replace Google Inc. as the business traded on the stock market; Google, the service, will be the largest single entity owned by that parent company.

Read the announcement “G is for Google.”

Uncategorized

Leadership on a technical commitee vs hiring and appointing the leader (io.js vs node.js)

NodeJS is an open source project. In 2013, it was acquired by Joyent.
The most popular fork of Node.js is io.js.

What? There is a fork of NodeJS? Why ? What happened ?
After the acquisition of NodeJS by Joyent, developers were not satisfied with the decisions taken.

Joyent, as any big company would do, after acquiring NodeJS, started to impose a different style of leadership.

Some people say this style can be defined as:
1. hire new staff
2. appoint the leaders
3. control developers tasks and new features.

What are the differences between NodeJS and io.js?

io.js:

1. this repository began as a GitHub fork of joyent/node
2. community-driven development together with active release cycles
3. includes many of the original Node.js developers
4. NodeJS new features are being merged into io.js
5. contributions and releases are under an open governance model.

Node.js:

1. NodeJS was invented in 2009 by Ryan Dahl, and other developers working at Joyent.
2. has slowed down development in recent time
3. sponsored by Joyent
4. Joyent owns the trademark Node.js
5. Advisory Board.

Wait, wait, this one is really important, so what is this Advisory Board again?
Lets make a quote from Joyent’s blog:

“As the community becomes more complex, it is important that we find ways to balance the needs of all constituents and provide a platform for these organizations to come together and to provide input into the project.”

Previously, Node.js was run via mailing lists, GitHub issues, and anyone could contribute ideas. But, after this transition to the advisory board, the community started getting some hate because it brought control away from the everyday contributors and moved the power to the “big shots”: companies such as Walmart, Yahoo, IBM, Microsoft, Joyent, Netflix, and PayPal.

I read in many many blogs and heard talking to people, that this caused frustration to contributors when pull requests where not accepted. So then people decided to make a fork of the entire NodeJS project, this is the origin of ‘IO.JS’.

Several NodeJS core contributors like Isaac Schlueter who was the leader of the Nodejs project and Ryan Dahl joined aiming to address a growing pile of concerns that NodeJS developers and contributors have.

I will make here a very unfair developers battle:

NodeJS vs io.js

Round 1:
NodeJS: Joyent wants NodeJS to stable. This means that NodeJS stays on an older version of V8. Consequently NodeJS does not support newest Javascript features.

io.js: is landing all changes to V8 as soon as they become stable, making this features available to devs asap.

NodeJS 0 x 1 io.js


Round 2:

NodeJS: Each odd release (as 0.11.x) is unstable and each even release is stable.
This lead the community to be waiting for v 0.12 for several months and many times to only be put off for later at least twice. The community has been waiting for the release for at-least a year now. Node looks at 0.12 as a staging point for 1.0 although the framework has been stable for a long time.

io.js: wants to use semantic version and update their version number whenever a breaking change occurs and move on, instead of using it as a lure to convince enterprises which are still skeptical of Node. This is why io.js reached v1.0 before NodeJS did and will probably stay ahead of Node in this matter.

NodeJS 0 x 2 io.js


Round 3:

NodeJS: Another strong feeling among developers is that a Benevolent Dictator style leadership has been promoted by Joyent has stopped working and that the community should have a more open governance.

io.js: bases its leadership on a technical commitee which takes care of the project’s governance based on consensus and not based on the descisions of an individual.

NodeJS 0 x 3 io.js


Round 4:

Currently, io.js is in multiple aspects, a bit faster than Node.js.

The complete performance benchmark can be found here: https://raygun.io/blog/2015/02/node-js-performance-node-js-vs-io-js/

NodeJS 0 x 4 io.js

Round 5:

io.js’s ECMAScript 6 support is much broader than Node.js. Comparison can be found here. http://kangax.github.io/compat-table/es6/#iojs

NodeJS 0 x 5 io.js

Round 6:

io.js ships with Google V8 4.1.0.25, and Node.js 0.12.1 ships with V8 3.28.73. Also, flags for ECMAScript 6 are different between Node.js and io.js. io.js’s guide to ECMAScript 6 flags can be found here. http://kangax.github.io/compat-table/es6/#iojs

NodeJS 0 x 6 io.js

Round 7:

NodeJS: Over the last year or so, the number of commits on the Node.js repo has been steadily decreasing.
nodejscontributions

Even worse, the number of releases of node drastically reduced in 2014.
nodejsreleases

io.js: Over the last months, the number of commits in the io.js repo has been just increasing.
iojscontributions

Result:

NodeJS 0 x 7 io.js

Conclusion:
io.js is based on a Technical Commitee which in practice takes care of the project’s governance based on consensus and not based on the descisions of an individual or just big brand companies. So far, by doing our unfair comparision this seems to be working better than the Advisory Board.

The IO.js is based on collaboration and people are complaining that Joyent doesn’t seem to be doing much to adapt to developers.

Reference:
https://raygun.io/blog/2015/02/node-js-performance-node-js-vs-io-js/
http://stackoverflow.com/questions/27309412/what-is-the-difference-between-node-js-and-io-js
http://www.infoworld.com/article/2855057/application-development/why-iojs-decided-to-fork-nodejs.html
http://www.quora.com/Why-is-NodeJS-splitting-into-two-versions-io-js-and-node-js
https://nodesource.com/blog/nodejs-v012-iojs-and-the-nodesource-linux-repositories