For some time, I have been interested in mobile app development, primarily using HTML 5 technologies. The interest started with BlackBerry's Playbook Offer, and to get a free PlayBook, I developed the free PlayBook application TimeDiff which was interesting experience for me.

As you might get from my posts, I am not that much of an HTML / CSS guy. I try to keep up with Python and C# but for a free PlayBook I actually did implement a pure HTML 5 & Javascript application, and using BlackBerry WebWorks SDK I turned that into a native (?) application.

Long story short, I had a real nice hands-on experience with jQueryMobile (the mobile version of jQuery) a neat framework to create touch-screen friendly applications. And I wanted to share some plugins with you that I found useful.Codiqa: This is something that I actually did not use for the development of TimeDiff, but I found it very useful for a start. Codiqa, located at http://www.codiqa.com/, is a very nice web-based UI to create a jQueryMobile based applciation. It has an online designer that you can create and preview your application with different device sizes.

DateBox: DateBox is a very nice set of plugins to add Date / Time pickers to your jQueryMobile application. Not much words needed, check out the demos here to see how many great stuff you can do with the DateBox.

Before my last words, you can take a peek at my application from here and get it for your PlayBook from the BlackBerry App World.

LiLi is a simple application that allows you to turn your USB flash disk into a fully working Linux distribution. It is written for Windows (sorry for Linux users that want to try other Linux distro's) and is distributed under GPLv3 license.

The software comes with an easy installer that we are used to in many Windows applications. After installing this little thing, you get a very nicely designed screen coming up...

The GUI is easy to understand. You simply choose your USB key that you want to install your Linux distribution on. Then you choose the installation source which can be a CD or an ISO image. You can even choose LiLi to download your favourite distro. If you have enough space on your flash disk, you can even add a persistent storage that Linux will treat as an hard disk. When you are done, you simply click the fancy lightning button and in a few minutes you have your fully working operating system on your USB, that you can easily take anywhere with you.

Good enough? Not heard the whole thing yet. You can simply select to embed VirtualBox into your USB disk, and you have your OS even when you are working on Windows. If you select the VirtualBox option, the USB key gets an autorun feature to run directly as you plug. Unfortunately, this is also for Windows only.

Not only the GUI is fancy.. You should also check out LiLi's web site http://www.linuxliveusb.com/ which has one of the coolest designs I've ever seen.

One of the reasons that I like C# and Python (together) is the feeling that they are converging to each other. How I ended up with this conclusion?

Well, I have just learned that C# (and not only in .NET Framework 4.0 but starting from the 2.0 version) has a way of declaring named and optional function arguments.. This quite sounds familiar to me: from Python as you might expect. I have a strong guess that Python had it earlier (even though I am not sure) but it is not the issue. Whoever had it before, somehow moved the other one forward.. That is what is going on with the modern and developing languages and I actually like this (kind of) competition. It helps the developers learn new programming languages and develop projects faster after getting familiar to the syntax..

JavaScript was quite not my "type" until I met jQuery. Working with jQuery is quite fun, and also made me learn some basic JavaScript. I was using the lightBox plugin by Leandro Vieira Pinho but I needed a way to open the lightBox from an external link. I could not find a useful reference on the web so I added my own solution.

Hi all, In a previous post, I mentioned that I will challenge myself for writing Dijkstra's algorithm with minimum lines of code. The C# code is here as promised. Now first of all, this is possibly the worst implementation that can be done; and the only intention was to really do things in a short way in terms of Number of Lines used. The code is not maintainable and not even readable. Well, the trick comes from maintaining only a distance array and calculating all other stuff wherever required. My first version of this code was 8 lines (I was separately holding a list of nodes that was not reached) but then I realized that it was possible to calculate it using the distance array each time. Before going into the code let me introduce you the basic idea of the algorithm as I implemented. As previously mentioned all edges have positive costs. Also we assume that the graph is connected. Let N be the nodes, i the source and j the sink node, A the distance matrix.

Maintain two lists U = {i} , V = N \ {i}

Set d[i] = 0 distance of i to i

While j is not reached

Find s in U, t in V such that d[s] + A[s,t] is minimum

Set d[t] = d[s] + A[s,t]

Take t from V and put to U

if t is j return dist[t]

Well, my code is even shorter than my pseudo-code. Here is the 4 line Dijkstra implementation (not counting the function definition and the closing bracket):

And now a much more efficient implementation of the same thing without recalculations. I don't ever say that it is efficient, but it is just more efficient. The best way would be maintaining the both lists outside of the while loop and removing and inserting necessary elements before continuing.

I'm not an expert on music nor have any education on recording technologies etc. I am not an audiophile (and not rich enough to be one). I just love listening to music, and love listening it loudly.

Today, I was driving and experienced something that bothered me for so long. It was just my car's FM player and the song was something that I have never heard of (and I don't remember it right now, low quality popular music:) Then there were 3 beats, played on left-right-left speakers consecutively muting the other one.

Dear those who are recording / mixing / mastering these songs, please use stereo responsively!.. It is quite unpleasant for a "listener" like me that gives almost full attention to the music (even while driving). My attention gets lost in seconds, and by the way, it really sounds disturbing. Please check out the high-quality albums and see that what you do is almost never done - and I'm quite sure that they know how they can do it much better than you -

Take good care,BCS

p.s: Everything in this post extends to surround systems without loss of generality. Unfortunately my car has only 2 speakers:)