Tuesday 11 September 2012

Quick Update to the Jupiter Broadcasting Android App

So I have replaced the parser with a variant of my parser from my JavaME app. I have also replaced the GUI from the RSS reader and will be implementing a download feature as well as the stream and go to web page features currently available. I have just replaced version on the market with the new version and will wait a few days before implementing the download feature as this will require a permission change and I want people to auto update to the latest UI before I ask anyone to update which I will have to do if I change the permission settings.

Android app on Google Play




The code is now on github here under the MIT License so if anyone wants to help out feel free and don't just the code to harshly as I originally wrote most of this app a year or so ago, while overly caffeinated watching a live episode of techsnap.

On another note, the app now has a competitor Callisto. Frankly its awesome and choice is always good also since both the apps are free and open source its hardly that much of a competition as either of us could take each others code whenever we pleased. Although I think my license is more compatible with that sort of behavior. Its still in alpha but I recommend you check it out and see which one you like better. I quite liked the in built IRC client in Callisto. Another awesome thing about Callisto is that it supports from android 1.6 up which means it supports older phone that my app doesn't. Unfortunately it also means supporting the live video stream for Callisto is probably not going to happen. However the creation of Callisto might give me the opportunity to change the API version of my app to 3.0 to support the HLS video stream rather than the RTSP stream with the knowledge that my users have somewhere to turn in Callisto. Anyway best of luck to Callisto and its developer, who I have to give mad props to doing this in Android 1.6 as I personally wouldn't have creating my Jupiter Broadcasting app with out the Media API that came in 2.2.


Thursday 6 September 2012

Java ME Permissions Suck and another Jupiter Broadcasting App

So I decided on the development platform and the app, I was going to write for the new/old phone the Sony Ericsson P1i. I would write the app for JavaME because at least then other people can use it. There are supposed to be more JavaME enabled phone in the world than androids. Therefore this way it won't be completely useless to others.

Getting setup up for development wasn't very difficult. I downloaded NetBeans with the JavaME plugin. (Note in order for JavaME to work you'll also need the JavaEE plugin. Its a bug :( ) I also downloaded the Visual Designer Plugin which is a really nice bit of kit to help with both the flow of your application and GUI design. I felt it really helped me to keep most of the back end code abstracted from the GUI.

The application I decided to write was a Jupiter broadcasting app because the default RSS reader on my P1i can't handle the feeds from the Jupiter broadcasting properly. I didn't port my android app instead I decided to do a complete re-write. Although I'm very tempted to swap out some of the old android app's parser with the new one from this app. Deciding I wanted a videos feed and a MP3 feed. I sat down a wrote an xml parser using the java sax library.

What's interesting about programming in JavaME isn't not what it can do but what it can't. I had to forgo the use of many features of Java that I'm very used too. The lack of generics and "for each" loops especially made me cringe but I persevered. The only major issue I came across was the permissions for JavaME Mid-lets. They are, to put it lightly, the most annoying thing I have ever seen on a phone(including crazy frog) and without a certificate, from Verisign or Thawte (Very Pricey), they don't go away. I mean every time a platform request or access to anything outside the app is made it asks the user about permissions and then doesn't save that as a setting !!!

I'll have to say some nice things about JavaME after that rant.

  • Its looks and feels for the most part native. (Which isn't something you can usually say about a java app)
  • Even though its all Java. It was much easier to pick up than I remember android being.
  • Its on a lot of devices. It even over took android, for while at the start of this year.

Anyway for those Jupiter broadcasting fans who have JavaME enabled phones.

Source code is on git hub
or
Download the jar to you phone.

It's still in active development(beta) so if you have any bugs let me know. I'm currently looking at new features like a
  • Live stream
  • Categorized show feeds (Done)
  • A file browser for previous downloads
 I'm probably going to MIT license it.

Here are a few more screenshots for those interesting. I think my phone's theme lends a lot to them but you have to admit the app looks a hell of a lot prettier than than my android version:

Thursday 23 August 2012

A Bit of a warning

To all those who read this for interesting pieces of software to use. I have a sad announcement I just bought a new phone or to be more specific an old phone. The Sony Ericsson p1i to be exact , much better than the IPhones and Androids of it's day and in my opinion still better at some things. (Hand writing recognition and UI) This means that I may end up writing a quite a bit of software which you won't be able to use, sorry. Unless of course you have a Symbian phone or I use a more cross platform development platform.

Currently the platforms I'm looking into are:

  • SDL/C++ 
    • My God they ported SDL to everything
  • UIQ3/C++ 
    • Probably not going to use this unless I can find a way of making use of the UIQ 2 OpenQub GUI builder
  • Java ME (Midlets)
  • HTML/JavaScript
    • This will be interesting as I will only be able to use a fraction of the API that I'm used to having
  • PhoneGap
    • Apparently early versions of this can run on UIQ
  • PyUIQ
    • Looks good for prototyping but not sure if it will be very useful
  • QT/C++
    • Basically QT only relies on the core part of the Symbian OS that both UIQ and S60 symbian phones have in common. So if I get it compiling I should be able to jump into QT creator and develop a nice QT app. Albeit with an older version of QT.
  • Emulators
    • The P1i has an impressive display of emulators which can all be developed for
      • Sega Mega Drive
      • Game Boy
      • Dos
      • C64
    • Obviously some of these aren't practical but then again some might be.
Anyway maybe something useful for others will come out of the server side stuff or there's a couple of people who still love UIQ devices out there who will see this post.


Friday 17 August 2012

Musings on paying for my Open Source Software


So a little while ago I wrote a Ubuntu one plugin for KDE's dolphin. It works well enough but it is just a service menu and lacks the nice icons on the files and folders that the nautilus plugin has. This is due to an inherent limitation in dolphin plugins and in order to get this feature I would have to re-write the plugin as a version control plugin in C++. Unfortunately I'm working at the moment and don't really have the time but I could take a day or two off, write the plugin and put the files up on something like gumroad so people could pay to have them. Do you think people would pay for this ? I know I have several hundred installs directly from within dolphin and more from my website. What do you think about a license in which I give away the source with the app but say you can only edit it for your own needs and release it with a proper open source license (my personal preference is MIT) when a certain goal is reached? Is this a viable method of shipping software on Linux for larger projects with larger budgets and goals?
Lastly am I allowed to ask for money for a ubuntu one plugin? Since Canonical have copy right on Ubuntu. Other apps use ubuntu one is this any different? The U1 dev's seem sound enough and if it brings more people to the platform I'd say they'd be all for it but what do you guy's think?

Saturday 7 July 2012

Install the Ubuntu One Dolphin plugin from within Dolphin

Quick update I've added the Ubuntu One Dolphin plugin to opendesktop.org so it should be in the "Download New Services" menu inside of dolphin itself soon for ease of install and use :)

http://opendesktop.org/content/show.php/Ubuntu+One+Dolphin+Plugin?content=152035

Sunday 17 June 2012

Translate the Ubuntu One KDE plugin

If you want the plugin in your native language fill out the form below and I'll upload a new release with your language included later in the week :)

Translation form.

EDIT: Well done lads that was a heroic response :)

Here is the code with multi language added and licensed under the MIT license. (That basically means you can do whatever you like with it)


Figured I should start releasing in something other than tar balls. So hope you like git hub your probably going to be seeing a lot more where that came from.


We now have have:
  • Irish (Although this was me)
  • Finnish (3 Translations, We have some KDE lovers over there :) )
  • Hindi
  • German
  • Spanish
  • Bulgarian
  • Latvian
  • Norwegian
  • Dutch
  • Romanian
  • Greek
  • Danish (3 Translations from Denmark as well :) )
  • French
  • Portuguese
  • Catalan
  • Swedish
  • Polish
  • Arabic
  • Croatian
You should all be proud of your selfs.


Also here's the tar ball for every who like that method as well.



Note; I won't be uploading the tar ball as much because of git hub so if your language isn't included check github.

Saturday 26 May 2012

KDE Ubuntu One Dolphin Plugin


So a while ago I switched to KDE because Unity wasn't really for me. While I've tried Unity again since and its much improved. I'm really liking KDE so I see no point in going back. However there were a few issues to overcome with my transition from Gnome 2 to KDE. Chief among them were the keyboard shortcuts and Ubuntu One Integration. Obviously the key board shortcuts were not a major issue because KDE is easily configurable but in terms of Ubuntu One it was a bit more of a struggle. There is a client out there  made by apachelogger but its old and still in alpha and the PPA didn't work for me. So I decided to use the Gnome client under KDE. Which worked but with a few issues.
  • KDE's file manager didn't have a plugin for Ubuntu One, like Nautilus does, so I had to use u1sdtool on the command line or the web interface to publish files and do other operations. 
  • It used the Gnome Keyring to store the token and I had to enter the password to it every time I logged in. 
  • The Control Panel was written in python and GTK and was ugly and slow under KDE.
As of 12.04 the Control Panel is now written in QT. So that issue is fixed. Also I learned that if I switch my login manger to lightdm it with automatically unlock gnome keyring if it has the same password as my login. So that was 2 issues down especially considering I like lightdm better than the kdm anyway.

That only  leaves the dolphin integration. Unfortunately the dolphin plugin was actually the only part of apache logger's Ubuntu One for KDE project that he didn't really like. He says it is no where near production quality. I therefore decided to roll up my sleeves and write my own.

First I decided to add some context context menus so I would be able to carry out common Ubuntu One operations without the need to use the console. So created a few .desktop files to configure them and created a ruby script to run the necessary commands.

#!/usr/bin/ruby

require "open3"

class UbuntuOne
  def unsync_folder input
    streams =  Open3.popen3 "u1sdtool --info="+input
    info = ""
    while(info != nil && !(info.include? "share_id"))
      info = streams[1].gets
    end
    if(info != nil)
      info["  share_id: "] = ""
      share_id = info.chomp
      exec "u1sdtool --delete-folder="+share_id
    end
  end

  def publish_file input
    streams =  Open3.popen3 "u1sdtool --publish-file="+input
    url = streams[1].gets
    puts url
    url["File is published at "] = ""
    streams.each do |i|
      i.close
    end
    exec "qdbus org.kde.klipper 
/klipper org.kde.klipper.klipper.setClipboardContents "+url
  end
end


#arg0 is the function to call
#arg1 is the file
input = ""
ARGV[1].each_char do |c| #put the spaces back
  if(c != " ")
    input += c
  else
    input += "\\ "
  end
end

puts ARGV[0]+" "+input
if(ARGV[0] == "unsync_folder")
  UbuntuOne.new.unsync_folder input
elsif ARGV[0] == "publish_file"
  UbuntuOne.new.publish_file input
else
  puts "Something went wrong :("
end

Note the ruby script only contains methods for the commands that needed some logic.

At the moment the menu for files support :
  • Publish and Copy Weblink 
  • Stop Publishing
And the menu for folders support:
  • Synchronize 
  • Stop Synchronizing
Honestly these context menus do nearly everything nautilus does except for showing you which files are in sync. Which means, I no longer have to drop to the command line to share files which is awesome.

To install the menu plugin just extract this tar ball into "home/yourusername/.kde/share/kde4/services/ServiceMenus/UbuntuOne/" and yes the tar ball was published with the plugin :)

If you have any issues or questions don't hesitate to ask.

I'm now going to take a look at apachelogger's old code for the version control plugin he wrote and the code for the git and svn dolphin plugins to see about showing what files are in sync, like nautilus does. I'm starting a job on Monday so I probably won't have the time for it for a while but I'll post it here whenever I finish it. Also on a side note I'll have to do it in C++ and I don't like C++ as a language but it'll get done ;)




Sunday 11 March 2012

I'm in the Android Market

So I finally got off my back side and paid google to put a few of my apps in the Android Market or Google Play or what ever the hell they change the name to next. I have made a few minor update to Kings app and a big update not so much in code but in features to the Jupiter Broadcasting app.

The Jupiter Broadcasting app will now stream not just the audio stream but the video stream as well. This will only work on devices that have the codecs to support the stream so sorry if it doesn't work for you. Also, and this should be obvious but you never know,  it probably won't work over 3g ie. you connection needs to be fast enough to support the stream.

Also if you have installed these apps from my apks before you may want to uninstall them before getting them from the market. I signed them with a different key. So android will probably yell at you when you try and get it from the market.

Anyway here is the links to the market :
Jupiter Broadcasting
Kings App

And here is the updated source
Jupiter Broadcasting
Kings App


Lets say they are BSD licensed for the moment ie. do whatever you want with the code. If anyone wants to contribute anything back let me know and I'll setup a repo on google code or github.