Fundraising for CuteSoma (Soma.fm mobile client) development

Developing CuteSoma and maintaining it for three different platforms (Nokia N9, Windows Phone, BlackBerry 10) is really taking me a lot of time. I’ve many features in mind to add but I can’t dedicate much spare time to them and to do it I should take time from other paid projects. I’ve also discarded the idea to make CuteSoma a paid app, because it’s been always free (except the Windows Phone one that was non-free for just a month, but only 6 people “SIX” bought the app).

So I decided to open a fundraising campaign on Indiegogo that is a service like KickStarter, but it’s available all around the world (not just in USA and UK like Kickstarter).

What do I Need & What You Get

I would like to raise at least 5.000€ to be able to keep maintaining the existing features and to implement new one. Developing for 3 different platforms really takes a lot of time. I also need to find a way to get a Windows Phone 8 device because at the moment I cannot test some features using just the emulator.

What the application currently does:

  • You can view the list of Soma.fm channels
  • You can listen any channel

Features I would like to add:

  • Scrobbling song to Last.fm
  • Write a new MediaSource for Windows Phone (the default one is quite bugged and I need to implement one from scratch)
  • Port the BlackBerry10 version to the native CascadesUI

The Impact

Funding the development of CuteSoma you will make thousands of people really happy, because they will be able to listen to Soma.fm on their Nokia N9, Windows Phone and BlackBerry 10 devices. You will also make me feel apreciated for all the hours I’m spending to write the code :)

Completly Opensource

Yes. CuteSoma is completly opensource. I keep my source code on GitHub and BitBucket and it’s always updated. All the CuteSoma versions are released under the GPL license.

Other Ways You Can Help

If you want to contribute but you can’t or you don’t want to send money, you could help me in the following ways:

1) Download and use the application:

2) Tweet/Blog about this fund raising campaign: http://www.indiegogo.com/projects/cutesoma-soma-fm-client/x/2353169

How to install latest stable Node.js on Ubuntu

If you develop with Node.js and you want to be sure to have the latest stable version, luckly there is a PPA for it. All you need is to follow these instructions:

sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs npm

That’s it!

Reference: https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

The Windows Phone Emulator wasn’t able to connect to the Windows Phone operating system: how to fix it

This morning when I started my Windows Phone 8 emulator to test an application, the emulator refused to work, giving me this error “The Windows Phone Emulator wasn’t able to connect to the Windows Phone operating system“. Luckly it’s very easy to fix. It’s caused by the virtual network interface that has been disabled for some reason (well… in my case it must depend on the other day when I tryed to trick WP7 firmware upgrade and used the disconnect trick, but this is another story).

I searched on Google for a solution and I landed on this page http://pauliom.com/2012/12/20/the-windows-phone-emulator-wasnt-able-to-connect-to-the-windows-phone-operating-system/

All you have to do is going to “Network and Internet –> Network Connections“, right click on “vEthernet (Internal Ethernet Port) Windows Phone Emulator” and Enable it.

network_interface_wp8

Using QtCreator to deploy and run a Qt application to a remote Linux device

QtCreator is a very flexible IDE and can really be adapted for a lot of things. I usually use it to develop mobile applications for Nokia N9 and BlackBerry 10, but it can be used for more generic tasks. In my case I wanted to be able to develop a Qt application using my desktop PC, deploy it and run on a remote (actually it’s on the same desk) Linux machine running Xubuntu.

Doing this is quite easy and you don’t need any specific plugin on QtCreator, but be sure to have at least version 2.6.x. Other than QtCreator you also need two Linux based PC (I used Ubuntu 12.10 for my development machine and Xubuntu 12.10 for the remote netbook) and an SSH account on the remote PC.

Add the remote device to QtCreator

QtCreatorDevice

To add the remote Linux device on QtCreator, use the Tools->Options menu and click on “Devices” item. At this point click on “Add” button and fill the fields using values similar to the screenshot. In particular specify a name for the device, the IP of the remote machine and a username and password that must already exist (I just created the user “andrea” on the Xubuntu machine and used the same password). I also had to set the timeout to 20 seconds, because I had some connection problems and the connection kept dropping after 10 seconds trying. To verify if everything is working fine, just click on Test button.

Add a specific Qt version

QtCreatorQtVersion

To write your application you may need a specific Qt version that is different from the one distributed by your Linux distribution. There’s no problem, QtCreator let you add different Qt versions without any conflict. In my case I installed the Qt5 version distributed by Canonical Qt5 Edgers Teamhttps://launchpad.net/~canonical-qt5-edgers
Once it’s installed, just click on “Add” button and select the qmake specific to the version you want to add (in my case it was in /opt/qt5/bin/qmake ).

Add a Qt Kit

QtCreatorQtKits

QtCreator permits to add new Kit (development configurations) and these kits are used during project creation to specify what you want to target. In my example I added a new kit choosing an appropriate name “Qt5 Ubuntu”, the device type, the actual device previously configured and finally the Qt version that we added before. With a kit I have a complete “toolchain” that allow me to write applications for a particular device, with a specific Qt version.

Putting the pieces together

At this point you just have to create a new “Qt Quick 2” application, and select the new kit you just created instead of the “Desktop” one. Please note that there is a little problem that I haven’t fixed yet (but I’m working on it): if you create, for example, a project named “QtTest1″ it will be deployed to the folder /opt/QtTest1/ on the remote machine. By default your user doesn’t have read+write permissions for that folder so I manualy created the folder and I gave a chmod 777 on it, just for testing. There are two possible ways to fix this: you could create a specific user that has read+write permissions on /opt/ or you could modify the deployment configuration to have the app deployed to the user /home (I will investigate on this possibility and I will write something in one of the next posts).

Final thoughts

What all of this could be useful for? Well, do 2+2 and you’ll easily guess ;) In the next weeks I will post more specific informations and I will update everyone with my progresses. Any comment is welcome! If you want to contribute to this you’re welcome too of course.

Spotify 0.8.8 for Linux crashes if it cannot connect to Internet: how to fix it

If you upgrade Spotify for Linux to 0.8.8.x version and you have some network connection problems (for example you’re behind a company firewall and need to set a proxy…) the application will crash/hang without letting you doing anything (neither setting Proxy informations)

Screenshot from 2013-01-06 18:56:15

This is caused by a deadlock in the GUI and you can view the complete debugging informations here http://pastebin.com/zcKgXEqz
To fix this, you just need to open this file ~/.config/spotify/prefs and add these two lines:

network.proxy.addr="123.123.123.123:1234@https"
network.proxy.mode=2

of course substituting 123.123.123.123:1234 with your proxyip:proxyport.