Chorn Sokun's Weblog

Conquer inner fear, push it to the limit!

Archive for the ‘Development’ Category

Joljet mobile client

leave a comment »

A few years ago, I built a music portal to experience ExtJS and of cause to create my own music listening experience. It was fun and I have learnt a lot from this exercise from hand craft the app, built script and caching optimization. As always with great power come great responsibility. Due to the size of ExtJS core, the page load is not satisfy by most. However, the site hosted on cheap server and not using any CDN therefore I can’t push it too far.

Moving on, I have done with ExtJS and I know the site works perfectly on desktop platform. However, on mobile it is kind of suck. But well, as a pet project I’m not too worry about that until I’m need to listen to my favorite song on the go then mobile client is needed. So, I decided to built one for myself AGAIN! :D. Yeah, again. Why not after all I’m a craftman I love builting stuffs.

Now here is the plan


I’m going to built mobile client which reuse all functionality from the portal and at the same time extending the functionalities to support offline, favorite & playlist customization or by the way I don’t want to be responsible for username & password so I am going to offload that task to Facebook.

Sound interesting right ;) to make it more interesting I shall say that I have no clue how to built a mobile app at this point. But, let see how long it will take for me to built one :D


Written by Chorn Sokun

May 12, 2014 at 8:07 am


with one comment

Out of my boredom I usually tune in some random Khmer Oldies Songs just to remind myself the glorious era where sound of the music would flew into the deepest of my heart and cheer me up. What I did in the pass was collect all my favorite songs and classified it manually and sometime after clean up my station I let iTune screw up my collection a big pain in the a^^ and as my habit of trying out new os release like Ubuntu every 6 months I got to remind myself backup the music collection before I do something silly. That works out quiet well until I am get lazy and decided not to waste my time move back and force I truth the Internet to play me my favorite songs :) which mean I optimize my money Internet expend when I am not using it for some secrecy works ;)

How it works out for me? YouTube! Yeah, what can’t be find on YouTube right? Except that streaming video on my connection is damn slow and like chopping my head every time the buffer loading. So I tried something lighter pure sound and that tons of site offer free mp3 and I do enjoy using those site which some of you may already know and love. But I am just too demand I want some control over what I want to listen, I want to be able to easily share my playlist with my close friends so they can rejoice in hearing the songs. It turn out that a few site does offer these ability, why am I still not happy? Because the site need to know about me want me to become a member and I kind of like what the f???ck. It like I have to tell my radio who I am before it play me the song kind of thing.

So enough is enough, I thought to myself “look geek if it doesn’t work out, do it yourself” ah huh, that was what I use to talk with my dest friend (sad he’d gone) why don’t we do something about it, It’d be fun. Now that I am bored it justified enough that I block sometime to deliver our plan and so I start prototype the project #sidekick and show it to a few friends get their feedback some -/+ and finally I got it out of the door “JolJET Hits” or should I call it “JolJET Hits Online Music Player” still have an issue of naming it properly but here how it looks:

JolJET Player v2

JolJET Player v2

A typic music player portable as it should be since it developed using HTML 5 and Sencha ExtJS technology blah blah blah not so interesting for an engineer to talk about tools. But hey it’s not bad for the cost of home stay during Khmer New Year instead of enjoying myself sight seeing Thansur Bokor Resort and weeks after to stabilize. But as the passion fill up I glad I spend my time develop this little product so that what I can do now:

  • On first visit to the site the app will load up default playlist fill with about 250 songs enough  if you want to just hear some noise the whole day
  • If you so obsess about what you want to hear then Clear all and start adding your favorite songs from: a) Library b) Artist Collection or c) Blind search
  • when you found it select it (multiple select is supported) and click on Add to playlist to append selected song to your current playlist
  • or if you so want to hear the song immediately just double click it and you got it
  • Not just that if your like to listen to the music during your work hours (I usually did :D) close your browser as soon as your boss walk to your desk, and revisit the site after he/she gone nice trick yeah ;) who never cheat. But I had implemented is the app will remember not only your selected song but it remember your last play song and resume it for you (Thanks Sothy Chanty for  his suggestion)
  • But how about I want my friend to listen to a song. NO NOT 1 songs my collection, well we got you covered from Now Playing tab you find a menu call Sharing just select your favorite sharing technical twitter/facebook and you done

Now that more like an ado why don’t you jump to the site and experience it yourself? Here the link as always I love to hear your comments/suggestions you can do it here or post on facebook page

Hope you enjoy the sound LIKE if you LIKED for sharing is caring and have a great weekend ;)

Written by Chorn Sokun

May 5, 2012 at 12:05 am

Build monodevelop on ubuntu 11.10

with 11 comments

Again? yes but this time I don’t have to built mono runtine Ubuntu 11.10 packed with mono 2.10.5 which good enough since what I am after is dynamic.
However monodevelop I got from Ubuntu Software Center (USC) is 2.6 and the official release is 2.8.x so I take my on my gut to try and built me an IDE ;)

This time it much easier what I have to do is get latest copy of the source code from

> git clone git://

Then install build dependent by issuing this command

> sudo apt-get build-dep monodevelop

I don’t know why mono-gmcs was not install as part of the previous command (if you know why please comment) for now I have to install another package

> sudo apt-get install mono-gmcs

and then I’m ready to

> ./configure
> sudo make && make run

> monodevelop


MonoDevelop 2.8.2
Installation UUID: b220bfc2-57c6-4b94-840e-ff6c6477632d
	Mono 2.10.5 (Debian 2.10.5-1) (64-bit)
	GTK 2.24.6
	GTK# (
Build information:
	Git revision: e047f99f6df7b5c801102c03f903d4dd722b2989-dirty
	Build date: 2011-11-11 15:03:47+0000

Thanks to mono packaging team, you guy rock!

Written by Chorn Sokun

November 11, 2011 at 11:12 pm

.NET developer survive on linux

leave a comment »

I’ve been joking with my friends “the open source fan boyz” that I am a Microsoft slave for the fact that I am a dedicated .NET developer. But for all the joke I found some competitive disadvantage for me moving forward. If customer is looking for a low cost solution .NET is not the way to go. Base on what I do for a living, I build desktop and web application in .NET. But I tend to focus more on Web Application which dragged me to ASP.NET MVC.

Let taking ASP.NET MVC to build solution for me it yield a great ROI for me

  1. I got to learn more about .NET library
  2. it still .NET so I can use all the skill I got
  3. got great IDE support => productivity is high so and so …

for clients :/ intranet deploy

  1. invest on the server hardware (normal)
  2. software license just take Microsoft Windows Server + SQL Server hmm

and for Internet deploy ASP.NET hosting generally more expensive than LAMP stack. If I am about to help client cutting down expenditure cost I got to get rid of the underline infrastructure need to run the application. Possible with Mono but I am keep hearing incompatible issues on ASP.NET + Mono.

Anyway let me (us) forget all about ASP.NET glorious day. Recently, I start caught up with a movement in two different communities. Both of them trying to escape from ASP.NET sandbox and they both  gave birth to two unrelated open source projects manos and Nancy that the cool part.

These two project promised to free its user from underline infrastructure (no more IIS is required!) and it work x-platform.

Up to this point I can only make manos serve page, I am keep watching and follow-up with Nancy development. I hope to be able to compare advantage and disadvantage between the two projects in the future.

“Nancy start with a full range of view template to choice from, and I do not think it hard for manos to do the same thing”.

Which one is the best? is not really important at this point, what important is when these projects are matured we can use it to build low cost solution for my clients while still enjoy writing C# “YES, it pronounced C-Sharp” :D, but how? Here the spec

  • Web Application power by [manos | Nancy] + a few open source libraries
  • Mono 2.8.x or higher
  • Server OS OpenSuse 11.13
  • Back-end database name a few open source DBMS

Why OpenSuse? it is mono home’s os, and if you want to get hot-fix on time that the way to go. So let me end this blah blah post with a teasing screenshot!

Hello World from manos running on OpenSuse 11.13 inside VirtualBox, client access from Ubuntu 10.10 if you care about the environment :D

There you go it’s how a .NET developer survive on linux nice hacking weekend everyone!

Written by Chorn Sokun

January 22, 2011 at 10:36 pm

.NET Database Application Development (C#)

leave a comment »

If you are interested in .NET and want to jump start with Database Application Development in no time here is your chance

Lady & Gentlemen, boy & girl I present you a .NET Database Application Development (C#) fast track with the following content:

  1. C# Programming Introduction
  2. Introduction to NHibernate .NET Object Relational Mapping (ORM)
  3. Advance Data Processing with NHibernate Criteria API
  4. Hand-on practice

At the end of the course your will learn tools & technique to develop database application which could talk various Database Management System (DBMS) from Microsoft Access, Microsoft SQL Server, MySQL you name it.

Now the truth about doing this in no time :D I lie :-P I need minimum 10 hours before I can transform a newbie into a .NET Database Application Development (C#)


  • Basic Programming Concept
  • Know basic C# Programming
  • Be able to read and understand this blog post – otherwise get yourself English tutor

If you, your friend interested or your employer got budget to develop your capacity drop me a line I would love to hear about it ;)

Written by Chorn Sokun

December 5, 2010 at 4:36 pm

Weekend => app.goLive ;)

with one comment

Early this month I got into a busy schedule in order to release my new database application. I needed to run & check a final test, wrote up manual and do some paper work to invite my colleague across the country (2 staffs from each province X 24) to attend a 3 days training workshop in total we get approximately 48 staffs which is too much for an IT training so we split it into 2 batches 12 provinces each.

In term of the actual database I allocated 2 days and for the first day of the training I leave it for general IT update lesson which include Khmer Unicode orientation half morning, and for that session alone I am very lucky to have Mr. CHEA Sok HuorCountry Project Leader from PAN and his colleague came in for help. Without them I wouldn’t know where to get such precise Khmer Unicode Orientation somewhere else, so thank you from the deepest of my heart.

Oh! Talking about helping there is another gentle who I owe him as well, that gentle is Mr. Tuy Pheap my long colleague. We share room in the last 3 years before he moved on to his current job and come back to seat behind my back :) “Again :D”.  I disturb him from time to time :D policing what my system do against his employer needs (the World Bank) not only that he also help me correct my Khmer Translation + Spelling :) and this phrase “ខ្ញុំយល់ហើយ!!!” for a button which in English say “I Understand” was his innovation :) let me tell you about this joke

In our new application if there are any problems or errors detected a list of detail explanation will show up ( jQuery modal )  what I originally did was to have user click on “Ok” button to close the message. But without anything special user might just click “Ok” and go on … that not fun. So we came up with an idea instead of naming the button “Ok” we called it “I Understand” :))

And as a side effect during the training we forget to translate a few messages so default message showed. Since the user  do not read English and he dare not click on the button to close the message :(

I am glad with the result as it turn out and thanks to all the backend libraries that I used without them I wouldn’t know how much I would need to damage my brain cells to get this job done :)

What I used?

  • NHibernate
  • Castle (MonoRail, ActiveRecord)
  • Rhino-Tool (Rhino.Security, Rhino.Common)
  • Oh ! ASP.NET for sure :) but I a brail devil don’t blame me for not using webform
  • Log4net
  • jQuery & it plug-in(s)


  • For the past 5 years most of them get use to do data entry in desktop mode (VB6)
  • Some of them using the Internet for the first time; right this is (1==1).
  • The amount of data that we collect had increase 1.5X
  • More restriction in term of data modification – they used to have full control over there data and that cause me alot of headache over the past years.

At the end of training session I got a request to setup a demo URL ( so that when participant get back to their duty province they can teach their colleague, by doing this I get a few additional feedback on how to improve the process of data entry as well as knowing how user interact with the application.

For sure: “No one is perfect” and “No software ever release bug free” as long as it could do it main job properly I would call it V1.

Now the weekend is coming I had to switch on actual URL and for that mean I had to copy a folder change connection string to get another URL up and running KOOL stuff ;)

Written by Chorn Sokun

July 24, 2009 at 3:59 pm

Posted in Community, Development, Geek

Tagged with

Storm The Castle

with one comment

I hope Ayende won’t mind if I steal the name :D well, he did used that name for one of his sample project. Anyway let me throw some good news out to all of my blog trackers “who loves coding :D” I just check-in a sample project using Castle minutes ago.

As I am not sure how many of you understand what I am blogging about or even had trouble try to replicate my trip. Now I make it simpler if you want to catch-up or debate with me on my future Castle posts you got a chance to start it  now just go grab a stick and stone from

If you have any question/suggestion/request you can post it on the project site I am happy to help it out as time allow ;)

Oh by the way this is my 100 posts :))

Happy Chinese New Year everyone.

Written by Chorn Sokun

January 24, 2009 at 11:59 am

What I’ve done?

with one comment

I had spent the last two weeks work with my colleague to improve our intranet web application which had been used for the last 3 years (.NET 1.1 WebForm days). I thought that was a good opportunity to introduce Castle into the organization and voilá tomorrow is my showtime. I am going to present this new draft to the management and I hope they like it ;)

WB-RILGP Powered by Castle

WB-RILGP Powered by Castle

It takes almost 2 weeks and I feel like I am building a plane in the sky. What can you expect not to do when you are on solo team?

With additional resource to help I believe we can get this kind of project done in 2 weeks; I hope all the  “warior in train” get ready to rock the world soon enough ;)

Written by Chorn Sokun

October 22, 2008 at 5:19 pm

Posted in Development, MonoRail

Tagged with

Surprise !

with 5 comments

It amazes to see how people taking their value time and energy try to make the different, somehow I was not expected this phenomenon to growth that much in Cambodia but the truth is Cambodian make a different.

Ladies & Gentlemen, Boys & Girls watch out !

Programming Localization

Syntax Localization

At the movement of posting I am not clear who behind this project… but, you guy made something that turn my morning into

Congratulation! now let open our discussion will this thing change Cambodian development climate what are your pros & cons?

Written by Chorn Sokun

October 11, 2008 at 9:35 am

Raising the Dark Army

with 5 comments

I never regret to step my feet into programming world back in 1997. My first experience using notepad to script out (HTML) website. I don’t remember how many times I skew up my brother’s computer just to figure out a thing no matter how hard he try to avoid me. 

Rewind for the last 10 years I keep pushing myself up step by step no matter how hard, stressful I got I never give up. 10 years? Yeah I know my brain deserved a major upgrade perhap replacement of RAM, CPU Squad Core or something :) But see it took me so long to get to this stage where I legendary programmers abroad take much shorter time to advance their skills.

You may compare my learning experience to a single pig raising in a big farm, the lack of physical interaction, challenge and guiding is the main source preventing it from fast growth. But that are all history today I am so happy, because I am no fall into those mind set and I am not alone, ladies & gentlemen the dark army is rising. 

Dark Army

Dark Army, taking on TDD & DDD

This is the 5th session that they all come together and learn .NET programming C# and I glad to become their instructor as much as I enjoy walking them through the learning curve. Although it is a programming course we don’t talk much about syntax sugar or debate about how it was designed because it doesn’t give much value in real world once it’s time to get down to business so what they need to learn are concepts and tool set for rapid application development.

I want to see some new face as well but it doesn’t seem to work out just yet :) but again we please to invite you to join our journey anytime just keep you eyes on our public calendar.

Let the spirit of sharing growth among Cambodian, let us all create an opportunity for our young generation to extend what we had discovered.

Written by Chorn Sokun

September 27, 2008 at 10:34 pm