Monday 22 July 2013

Ubuntu on the Edge of Success



My eyes have been glued to Canonical's crowd funding campaign, to create Ubuntu Edge. A top of the line limited edition smart phone packed with technologies everyone is too scared to ship. They are asking for a lot, 32 million dollars, in order to produce 40,000 incredibly awesome Ubuntu Touch devices. The specs of the devices are stunning:
  • Fastest multi-core CPU, 4GB RAM, 128GB storage
  • 4.5in 1,280 x 720 HD sapphire crystal display
  • 8mp low-light rear camera, 2mp front camera
  • Dual-LTE, dual-band 802.11n Wi-Fi, Bluetooth 4, NFC
  • GPS, accelerometer, gyro, proximity sensor, compass, barometer
  • Stereo speakers with HD audio, dual-mic recording, Active Noise Cancellation
  • MHL connector, 3.5mm jack
  • Silicon-anode Li-Ion battery
  • 64 x 9 x 124mm
 I'm definitely going to picking one up but unfortunately I have to wait till pay day thereby forgoing the day one 600 dollar price tag. They go up to 800 dollars after the first day :(

What's truly insane about this is that they not only have to break nearly every crowd funding record ever set in this attempt but they are on course to do so and then some. When I returned from work at 7:40 they were at about 770,000 dollars as I write this post at 22:10 they are at 1,430,000 dollars. That means in about four and a half hours they have raised 660,000 dollars at a rate of 146,666 dollars every hour. At that rate they will reach their goal in a little over a week. 

That said I think some of this has to do with the first day offer of a $600 device instead of paying $800 dollars but it is never the less promising and if they hit their goal it will send shock-waves through both the software and mobile industries. 


Saturday 1 June 2013

Phone Gap's Build Service is Awesome

If you haven't heard of Phone Gap before it's a framework for turning HTML5 applications into mobile applications. I've used it before by downloading the SDK and building apps for both Android and iOS using mainly javascript with a small bit of native code. It's a pretty awesome piece of tech although it can tend to be a bit slow.

Today was the first time I used Adobe's Phone Gap Build Service and I have to say I was extremely impressed. Firstly it's free for opensource apps, it took maybe 2 minutes to setup, integrate with Github and suddenly I had an application targeting :

  • Android
  • Windows Phone
  • Symbian 
  • Blackberry
  • webOS
Obviously if your using the build service you can't take advantage of native code but still it's pretty epic. I now have an app for several platforms I've never developed for and all I did was point a web page at a git repo. They also give you one private application for free so if you want your HTML5 app on some platforms you'd otherwise never touch with a fifty foot rusty barge pole give it a go. You can see an example download page for my Open Jog app below.


Monday 27 May 2013

Jolla, Vivaldi what do think of Ubuntu ?

Just pre-ordered a new Jolla phone one of the successors to Meego and Maemo, who's devices I liked so much. It looks awesome and I can't wait to have proper Linux phone. Their launch is especially important for me due to a fall that caused the touch screen on my N810 to break and become almost unusable. Luckily the display itself still works just fine so I'll probably just use it in a hobby project or something.

So you'll probably see some Qt apps on the blog in the not to distant future. Hopefully targeting not just Jolla but Ubuntu Touch and KDE's Vivaldi Tablet. All these other platforms do have me a little worried. Mainly in regards to which one do I want to support or more to the point which one can I support since I won't have the money to buy all three devices not to mention a Firefox OS phone. I'm slightly scared the amount of emerging platforms at the moment may make it difficult for any one of them to even get the sort of community support that went behind the Nokia N900. I think the only way to make sure they survive is to buy the first that comes out and if I have the money and it's not to wasteful the second. Here's hoping the first is a phone and the second is a tablet.

There are several  reasons these set of open platforms may stand a greater chance than those that came before:
  • The main development platform is Qt and Qt is awesome, many of my favorite applications are Qt apps e.g. Skype, Kate
  • If they sort out their SDKs they should be either compatible or easily portable. Meaning, if target all of them and some fail so long as one succeeds we as developers should be able to have a viable revenue stream regardless of which platform succeeds.
  • The community is bigger and more organized, there seems to be more Linux users and r/linux pushes a lot more traffic than it used too.
Needless to say, I hope every one of these platforms succeeds but if they don't, I really hope at least one of these truly thrives. The real question is which platform the community and the public as a whole will get behind and which will succeed.

Saturday 18 May 2013

Open Jog Alpha

I'm launching a new project in order to get me fit. It's called OpenJog although the name is pending review. It's a HTML5, Jquery Mobile Application to help joggers and other athletes stick to their training schedule. In particular it's helping me complete couch to 5k at the moment. The major features at the moment :


  • Display of workouts which change as activities are completed
  • Sound alerts for when you should switch activities
  • Many more to come ....
It's all open source(MIT Licensed) and up on github. An example can be seen here.


I'll be working out it for the next little while as I want to release it for firefox OS. If anyone finds any bugs or other issues with it please let me know on the github issues page.


Monday 1 April 2013

Android App Transaltion

Android has quite a nice system to allow translation and localization of apps. You store all your strings in an xml file abstracted from your code called strings.xml. You can then provide a different strings.xml for each language you want to support by storing the new strings.xml in a separate values folder. For example, if I translated an app to Irish, I would add a new values folder values-ga as ga is the two letter language code for Irish. Then I would place my new translated strings.xml into that folder.

Here's an example of how I added Irish language support to my Jupiter Broadcasting app
https://github.com/ShaneQful/Jupiter-Broadcasting-Android-App/commit/ff2d82609839f44915652bd9c98a49ab889e5bc5

As you may have noticed from some of my earlier posts. I'm a great believer in providing software, especially opensource software to users in their own language so I have created a form to allow users to easily translate the JB app to their native tongue.

https://docs.google.com/forms/d/1m7tkmIxdvCA9effm-_BAH1azW-EtwZWElOx7qlecchE/viewform

I also encourage anyone who would like to have a slightly more impressive Github profile to copy my example commit and send me a pull request with a strings.xml in a language which you know well*.

Another way to get involved in open source translation is to create a launchpad account and start translating your favourite project on launchpad. I myself have helped with the translation of Ubuntu's Unity and MojoSetup, an opensource cross-platform installer used by many Humble Bundle games, to the Irish language.



* Please don't just use Google translate I want the experience to be as good as possible for users.

Monday 11 February 2013

KDE is awesome because it can be other DEs


KDE 4.10 was released a few days ago so I decided to tell people why KDE is my favorite desktop environment (DE). I was a Gnome 2 user. I loved Gnome 2.32, the last Gnome 2 release I used, it was fast configurable and generally pretty bad ass. These are the same reasons I like KDE except KDE is better because :
  • It doesn't need compiz for fancy effects they're built in. 
  • It's the fastest desktop for gaming, even faster than xfce and lxde. 
  • You can basically make any of the other desktops using KDE. 
  • It is generally more polished than any of the other environments eg. you don't need to use the extra plugins like in Gnome3 but even if you want to they are built in to the menus in KDE. There's no need to go to a random website to download them.
In my personal setup, I have an activity for regular KDE setup, a Gnome2 like activity and a Unity like activity. I even installed the app menu runner for krunner because I like Unity's HUD but that's the only thing that I use that isn't included in KDE from Kubuntu to get all the setups seen below.

KDE 4 Default:



Gnome 2:


Unity:



Wednesday 6 February 2013

Diary Down, Diary Software based on Markdown

I have been writing diary entries for the last year as part of my project and for other projects. It's a great way of not forgetting anything and I highly recommend it if nothing else other than to keep you sane on larger projects. I have been doing this in markdown, which is an amazing little language to write in that converts to html.

I had my diary in a git repo & scp'd the resulting html to a server every time I was finished writing so I could access the info anywhere. Eventually I wanted to index the entries so I wrote a little ruby script to generate a table of contents for me which worked great until I decided to over engineer the crap out of it now it's really awesome. In any case due to it's usefulness for me I decided to open source it so that it may be useful for others.

It requires:
markdown & ruby & a unix box (It probably won't work on windows)

Here's
An Example Diary
The Github for the project

The README on the github show's you how to use the diary. The git & scp stuff have been commented out but they are still in the code if anyone  wants to use the features. Play around with the example, re-size the windows, use the key board shortcuts & hopefully you'll see this can be useful for you too.


Monday 14 January 2013

Quick Command Line Tip

This is really just for me in case I forget but it should be helpful to others. The 'notify-send' can be used to send desktop notifications when your program has finished running. This is quite handy for long running commands that you might forget about like dding images or what not.


Friday 11 January 2013

My Raspberry Pi Cluster :)

So my final year project is to make a cluster of raspberry pi micro computers to crack encrypted office documents and here is my pi cluster :)


The distributed document cracker is based on John the Ripper which I've already started to contribute to
I have a prototype for distributing John already built and while its not ready for public release everything made as part of this project will be open source once I feel the code is ready. (Probably under the MIT license)

Below is a gallery of how it got to this state. Sorry about the blurry images, I'm not a great photographer.































Tuesday 8 January 2013

What I've been upto ... U1, JB & John the Ripper

So I haven't posted here in a while not because I haven't done any development but I haven't really had the time. The reason for this is quite simply, it's my final year of college and there's a lot of work to do especially to do with my final year project. I thought I'd do a quick post detailing some of the open source development I've been doing over the last little while.

Ubuntu One KDE Plugin:

I've added a few more languages contributed by the community, specifically Russian & Brazilian Portuguese. Brazilian Portuguese being a little bit tricky since it doesn't have a standard 2 letter language code like all the other languages added so it took a bit of trial and error to figure out the code KDE wanted. For future reference for anyone googling this because they have the problem its:


pt_BR

Also while I haven't added it to the installer inside of dolphin yet. A new branch has been created at thebehest of a user using dolphin with Ubuntu's unity. It removes the program's reliance on klipper, kde's clipboard manager, using xclip & autocutsel in its place.

https://github.com/ShaneQful/u1-dolphin/tree/without_kde



Jupiter Broadcasting:

 I've contributed to https://github.com/rikai/JBAR-Firefox but only in a very minor way. I've done some minor bug fixes on the android app and there's a bug that I still need to fix in the Java ME but considering it has a user base of me and like one other person I'm taking my sweet time getting around to it. I was contributing to https://github.com/dominickm/jupiter_broadcasting_mobile_community, a HTML5 mobile app but that project now seems dead. Hopefully some one will pick it up or I might jump back into it after college. I still have commit access to the repo and am willing to merge any pull request sent so if anyone wants to give it a go don't be shy.

Final Year Project:

I don't want to say to much on this in case some idiotic piece of academic software accuses me of plagiarizing myself but I'm writing a system to perform the distributed cracking of office documents(MSOffice, PDFs, ODFs) on a network of raspberry pi computers


John the Ripper:

I'm using John the Ripper as the base cracker for my final year project. Unfortunately I didn't discover it could crack documents until I'd already nearly finished some ODF cracking software. Actually the only thing left to do is finish the AES encryption which would be nearly pointless since all the lastest releases of OpenOffice & LibreOffice use Blowfish for encryption but I digress. This was more than a little irritating as it was thought that I might have to expand the project but for now helping John's development with a focus on office documents should hopefully be more than enough. You know along with a system to allowing for it to be distributed over a network with a really pretty web UI. So far I've created this https://github.com/ShaneQful/npdf2john_ruby. A PDF parser which takes out the necessary information from a PDF for decryption and passes it to John in the format in needs. Which lead to my first bit of code actually in John :) 


but more importantly it was the last thing they needed to get rid of the older pdf format which only supported up to PDF specification 1.4 and move to the newer format which supports all PDF's ie. up to 1.7.  I would like to point out at this stage that obviously most of the work on the newer PDF format was not done by me but by Dhiru. Who was amazingly helpful along with everyone else on John's mailing list when I asked about how things worked and what I should focus on in order to improve John. In fact I really think John is a great example of a project which is really easy to get involved in with and has what seems like a really nice development community.

Others:

There were other things but I think I've yammered on log enough. Anything else will probably be on my github page.