embedia – moseasymedia Links

January 12th, 2010

Here is a list of embedia (moseasymedia) releated links:

Joomla! Extensions Site
http://extensions.joomla.org/extensions/multimedia/multimedia-display/2288

Joomla! 1.5 Demo
http://joomla15.mambojoomla.com/index.php?option=com_content&view=article&id=45:moseasymedia-demo-tutorial&catid=35:moseasymedia-demo&Itemid=53/

MiaCMS Demo
http://mambo.mambojoomla.com/index.php?option=com_content&task=view&id=27&Itemid=39

WikkaWiki Demo
http://wiki.brilaps.com/wikka.php?wakka=embedia

Project Source
http://code.google.com/p/embedia/

http://sourceforge.net/projects/moseasymedia/

Project Statistics
http://sourceforge.net/project/stats/?group_id=191881&ugn=moseasymedia

Old Demo Site
http://www.ocszone.com/index.php?option=com_content&task=view&id=74&Itemid=1

Old Manual (but still applies, if you change all the moseasymedia with embedia)
http://www.ocszone.com/index.php?option=com_content&task=view&id=92&Itemid=1

Wiki Entry
http://wiki.brilaps.com/wikka.php?wakka=moseasymedia

Give PNG a chance

December 15th, 2009

Give PNG a chance* Stoyan Stefanov

This is a screencapture of playing the thing in WebKit (Safari). The video is done in pure HTML, JavaScript and CSS with no images. The fancy new WebKit animation additions to CSS make it look like a flash a bit. Instead of images, I used HTML entities.

More info:

http://givepngachance.com

http://phpied.com/give-png-a-chance/

Lyrics:

http://www.phpied.com/help-write-lyrics

Hextatus – Your Facebook Status in Hex

November 27th, 2009

A few months ago, I had developed a silly Facebook application that I never mentioned here. Hextatus it is.

http://apps.facebook.com/hextatus/

Hextatus (hex-ta-tus) displays your status in hexadecimal form. So you may just look geekier or cooler or nerder !

You can also post hex encoded Notes to your Wall.

Plain Text Status -> Hexadecimal Status

Plain Text Note -> Hexadecimal Note

Be warned, you may have a lot of your friends with rolling-eyes !


Launching Eclipse from the Command Line with Workspace Argument on Mac OSX

November 25th, 2009

Title says it all. :)

Launching Eclipse from the Command Line with Workspace Argument on Mac OSX…

1
open Eclipse.app  --args -data /projects/workspaces/myworkspace

Passing Hudson Environment Variables as Parameters

November 22nd, 2009

Sick weekend; flu, cold, whatever it may be. Hence, for the lack of anything better to do, I gorged myself back into some build-package-release stuff for the Aliro project. The first biggest piece was integrating Hudson, SVN, Ant. And below is a short note for something that made me chase my tail for a bit.
If you’re putting together a build system, most likely you’ll need to pass some variables/parameters into some other processes. In my case, I needed to pass a few Hudson environment variables as parameters to Ant; Hudson workspace path, build number etc. The following table contains a list of all of these environment variables that can be passed around as parameters from Hudson.

Environment Variable Description
BUILD_NUMBER The current build number, such as “153″
BUILD_ID The current build id, such as “2005-08-22_23-59-59″ (YYYY-MM-DD_hh-mm-ss)
JOB_NAME Name of the project of this build. This is the name you gave your job when you first set it up. It’s the third column of the Hudson Dashboard main page.
BUILD_TAG String of hudson-${JOBNAME}-${BUILD_NUMBER}. Convenient to put into a resource file, a jar file, etc for easier identification.
EXECUTOR_NUMBER The unique number that identifies the current executor (among executors of the same machine) that’s carrying out this build. This is the number you see in the “build executor status”, except that the number starts from 0, not 1.
JAVA_HOME If your job is configured to use a specific JDK, this variable is set to the JAVA_HOME of the specified JDK. When this variable is set, PATH is also updated to have $JAVA_HOME/bin.
WORKSPACE The absolute path of the workspace.
SVN_REVISION For Subversion-based projects, this variable contains the revision number of the module. If you have more than one module specified, this won’t be set.
CVS_BRANCH For CVS-based projects, this variable contains the branch of the module. If CVS is configured to check out the trunk, this environment variable will not be set.
*from http://wiki.hudson-ci.org/display/HUDSON/Building+a+software+project

Now you know the names, all you need to do is build.path=${WORKSPACE} in the Ant properties box in the Hudson project configuration. Of course, you can access that parameter as ${build.path} in the Ant build xml or properties files.

Hudson kicks off the Ant, the command line looks like:

1
ant -file build.xml -Dbuild.id=${BUILD_ID} -Dbuild.workspace=${WORKSPACE} init

Building, Installing, Configuring The Android Platform and Android SDK on Ubuntu 9.10 64-bit x86

November 11th, 2009

Android SDK LogoUbuntu Logo

This post is about my battle of building, installing and configuring the Android Platform and the Android SDK on Ubuntu 9.10 64-bit x86. Insult to the injury, all that is happening in a VirtualBox VM on a Mac running Snow Leopard.

Please remember, this is NOT intended to be a step by step instruction manual. RTFM ;)

Follow the regular installation instructions and possibly throw in the following in the mix, when and if you have to.

You will need the Android Source to build (doh!). Here.

Obstacle #1. No Java 1.5.0 in Ubuntu 9.10. Gotta have it, otherwise Android “make” barely bothers to launch.

http://java.sun.com/javase/downloads/index_jdk5.jsp is a starting point. I grabbed the rpm build.

Assuming you have the “rpm” (otherwise apt-get install rpm), install the downloaded package. –force-debian –nodeps flags may be required.

Now you have Java 1.5.0 in place, you need to setup your environment properly.

1
sudo update-alternatives --install /usr/bin/java java /usr/java/jdk1.5.0_22/bin/java 50
1
sudo update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.5.0_22/bin/javac 50

** change your jdk1.5.0 path if necessary

Getting close.

The “apt-get install” in the documentation http://source.android.com/download includes “sun-java5-jdk“, so take it out and run the command as follows:

1
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev

Try the “make” now.

Next is installing the Android SDK on Ubuntu 9.10. Grab it at http://developer.android.com . Unzip, move it around etc.

Starting with Android SDK r3, you need to pick and choose what you want to download and install. “./android” under the “tools” directory does that for you. However, every single time I tried this on my Macs, I got the “You might want to force download through HTTP in the settings.” error. So be it, go the the options, simply check the “Force https://… sources to be fetched using http://…” option and download happily ever after. This was a no-go in my Ubuntu 9.10. The trick to properly enable and utilize that checkbox is to run:

1
export GDK_NATIVE_WINDOWS=true

Now, you should be able to download the SDK without the https:// mallarky.

After all this, hopefully, you should be Android’ing in your Ubuntu box in no time ;)

Good luck.

Save My Ass – Clear Your Call & SMS History

November 9th, 2009

After getting a few very interesting emails, I decided that I should provide a bit of a historical and informal insight to those who might be curious about what that “Save My Ass” may be.

SaveMyAss (Save My Ass) a convenient way to clear the Call and/or the SMS records on the Android based phones. The delete (or purge) process runs automatically upon the app launch without further user intervention. The app either deletes  a preset number of messages set in the preferences, or by age (i.e. last 10 min, last 2 hours etc.).

Why did I build this app? Just because.  *this is the easy answer (i could’ve said, just for shits and giggles :) )

Why did I build this app? Just because, I thought it would be an interesting challenge. I worked extensively with Android Messaging app and SMS internals during the development of “Txtract – SMS Backup for Android“, “Save My Ass” would be the icing on the cake in terms gaining more expertise on Android.

Why did I build this app? About five months ago, I was about to get a ticket because a polica officer thought that I was on the phone while driving. I swear, I was not on the phone, or was not doing anything on my phone. I was pulled over, and I had to show the officer my call and message history to convince him that he stopped me for no reason. That incident was indeed the spark that made “Save My Ass” built. I don’t want to give anyone any ideas about how they may use the application. The rest is up to the users’ imagination :)

About the “Save My Ass” name; it’s supposed to be just funny and provocative. Nothing more, nothing less. I can only hope that no one will find the name offensive.

Docs @ http://wiki.brilaps.com/wikka.php?wakka=SaveMyAss

Support at; http://forum.brilaps.com/index.php?board=20.0

Senses Capture – Leaves’ Eyes

October 23rd, 2009

Senses Capture – Leaves’ Eyes and Yuna

I was simply testing YouTube’s “share to blog” option. One of my recent fave’d songs with a super cute video.

News Fishing – Stumblish Way of Browsing the Latest

October 11th, 2009

Since I introduced myself to Google AppEngine, I’ve always liked it. It’s truly a joy to develop on the AppEngine platform. Due to hectic work schedule, I wasn’t able to get my head around to thinking of a new toy project so I could get into AppEngine again. Well, this weekend I decided to take a break from work-work and build something on the side for a change.

When I was working on the NewsXperiment project, I was neck deep in the RSS/Atom feed world. All the news feed sources that I had accumulated for NewsXperiment was hanging around to be used for another purpose. So came “News Fishing“.

I needed a way to quickly peek at what’s happening “right now” without being lost in a jungle of “stuff” on a web page or in an RSS reader app. I wanted to see “one” news item at a time, and if my interest in intrigued I wanted to dig in more by clicking on the link to the original page. If not, keep fishing. That was my initial and only requirement and it turned out to be the premise of “News Fishing“.

On the techie – geeky side of things, News Fishing uses quite large set of features that are provided by the Google AppEngine platform; Crons Jobs, Task Queues, Memcache etc. I opted on using YUI 3.0 as the javascript library of choice on the frontend.

  • As I’m typing this, two mobile apps (for iPhone and Android phones) for News Fishing are in the works. ;)

http://newsfishing.appspot.com

http://wiki.brilaps.com/wikka.php?wakka=NewsFishing

Must Call This Function!

June 30th, 2009

I was going through some code refactoring today, and needed a certain set of classes calling a particular function during their initialization.

I needed the function to be absolutely (i mean absolutely) implemented by any deriving classes of the base object.

I needed the function called automatically, so I won’t have to remember calling it anytime I derive something new out of the base class.

So, here is how I accomplished this lovely must-call-this-function pattern.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
interface ISample
{
    public function makeSureThatThisFunctionIsCalled();
}

abstract class ASample extends TheParentClass implements ISample
{
    public function __construct ($someParams)
    {
        parent::__construct($someParams);

        $this->makeSureThatThisFunctionIsCalled();
    }
}

class Sample extends ASample
{
    public function __construct($someParams)
    {
        parent::__construct($someParams);
    }

    public function makeSureThatThisFunctionIsCalled()
    {
        // do whatever you need to do here....
    }
}

class AnotherSample extends ASample
{
    public function __construct($someParams)
    {
        parent::__construct($someParams);
    }

    public function makeSureThatThisFunctionIsCalled()
    {
        // do whatever else you need to do here....
    }
}

The code should be self explanatory for the OOP savvy folks. Here is a very short description of what happens here.

Our actual class “Sample” extends the abstract class “ASample” which in turn implements the interface “ISample” (don’t worry about extending the TheParentClass). Implementing the “ISample” will require us to actually implement the makeSureThatThisFunctionIsCalled() function somewhere either in “ASample” or “Sample” class. We need class specific implementation of the function, so “Sample” and “AnotherSample” classes implement it.

Oh great, yay! We enforced our derived classes implement a function of the interface. Big deal!

How will we make sure that “makeSureThatThisFunctionIsCalled()” function will actually get called ?

In this sample, all the deriving class constructors call their parent::_construct which keeps bubbling up to TheParentClass so on and so forth…

So, we simply stick in “makeSureThatThisFunctionIsCalled()” in the immediate parent’s constructor and tada !!!

Our must-be-called function is surely getting called during the object’s initialization.

This may sound like a glorified initializer, but you never know. You may just need something like this.