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.

Suicidal Pattern and Observers

June 17th, 2009

The other day, I came up with a sort of bizarre idea of exception handling in PHP. Not so interestingly it may be, you’ll find out as you read, this design pattern is called “Suicidal Pattern“.

The idea is around an object throwing itself as “throw self” (actually throw this) and it’s own handler catching and handling and announcing to its observers.

And here it goes:

Read the rest of this entry »

MiaCMS 4.9 Beta Released

June 17th, 2009

MiaCMS released a beta version of the next minor release of the project, version 4.9.  The changes for this release are as follows:

General Changes:

  1. PHP 5 is now required (PHP 4 users must stay on the 4.8 branch until they can upgrade to PHP 5)
  2. Accessibility cleanup added
  3. PHPMailer upgraded
  4. Updated the MOStlyCE editor to latest TinyMCE core
  5. MOStlyCE support added for skins and content templates
  6. Added a new content bookmark component/module
  7. Added a new tag cloud module

JavaScript Related Changes:

  1. Fixed minor JavaScript issues identified with the 4.8 configuration
  2. Increased performance
  3. JavaScript now loads either in the document <head> or just before the closing </body> tag instead of scattered throughout the page; most of the time it will load just before the closing tag, since there are additional performance benefits to that method (http://developer.yahoo.com/performance/rules.html#js_bottom).
  4. Upgraded the Yahoo User Interface (YUI) from 2.6.0 to 2.7.0

Since the JavaScript architecture was fully rewritten with the 4.8 branch and again refined with 4.9, we’ve created a new starter doc on the wiki that details more about working with JavaScript (and YUI) within MiaCMS – http://docs.miacms.org/wikka.php?wakka=JavaScriptForDevelopers.

DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE

June 13th, 2009

Could it get any better ?

WTFPL – Wikipedia, the free encyclopedia.

The WTFPL (Do What The Fuck You Want To Public License) is an uncommonly used, extremely permissive free software license. The original Version 1.0 license, released March 2000[2], was written by Banlu Kemiyatorn who used it for Window Maker artwork.[3] Samuel “Sam” Hocevar, a French programmer who was the Debian GNU/Linux project leader from 17 April 2007 to 16 April 2008, wrote version 2.0.[4][5] It allows for redistribution and modification of the software under any terms—the licensee is encouraged to “do what the fuck [they] want to”. The license was approved as a GPL-compatible free software license by the Free Software Foundation.[1]


           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
                   Version 2, December 2004

Copyright (C) 2004 Sam Hocevar
 14 rue de Plaisance, 75014 Paris, France
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.

           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

 0. You just DO WHAT THE FUCK YOU WANT TO.

Update

June 12th, 2009

It’s been a while that I’ve put anything in here. Busy times !

Big news of the previous months… I brought an end to the good old times at S1 Corp after 8 years, and I moved up to the Bay Area (a.k.a. San Francisco), and started working for eMeter Corporation with some brilliant minds in the software industry. I am thrilled. Moving was a %#$^ though. Still have lots of stuff left at Los Angeles to be picked up, sold, given away in the near future.

When I was dropping the moving truck back at the U-Haul, I was told “Welcome to the better half of California!”. Time shall tell.

Deming’s 14 points

March 22nd, 2009

So true !

  • Create constancy of purpose.
  • Adopt the new philosophy.
  • Cease dependence on mass inspection to achieve quality.
  • Minimize total cost, not initial price of supplies.
  • Improve constantly the system of production and service.
  • Institute training on the job.
  • Institute leadership.
  • Drive out fear.
  • Break down barriers between departments.
  • Eliminate slogans, exhortations, and numerical targets.
  • Eliminate work standards (quotas) and management by objective.
  • Remove barriers that rob workers, engineers, and managers of their right to pride of workmanship.
  • Institute a vigorous program of education and self-improvement.
  • Put everyone in the company to work to accomplish the transformation.

The points were first presented in William Edwards Deming’s (October 14, 1900 – December 20, 1993) book Out of the Crisis (1986)

Computer Quotes

March 8th, 2009

I came across some interesting “computer qoutes” on http://www.brainyquote.com. Couldn’t help it but post a few here.

A computer once beat me at chess, but it was no match for me at kick boxing.
Emo Philips

Computers make it easier to do a lot of things, but most of the things they make it easier to do don’t need to be done.
Andy Rooney

The good news about computers is that they do what you tell them to do. The bad news is that they do what you tell them to do.
Ted Nelson

The real danger is not that computers will begin to think like men, but that men will begin to think like computers.
Sydney J. Harris

Why is it drug addicts and computer afficionados are both called users?
Clifford Stoll

StumbleUpon’ing Into Yahoo! Search via Yahoo! Pipes

March 6th, 2009

If you see “No Results” in the box above, it’s because WordPress messes up with the javascript embed.

You can try this on your own StumbleUpon.com account @ http://pipes.yahoo.com/yipes/yourstumbles

What is this ? How does this happen ?

Per Yahoo!;

Pipes is a powerful composition tool to aggregate, manipulate, and mashup content from around the web.

And it really is.

Read the rest of this entry »

We’re Gonna Be In the Hudson

March 4th, 2009

This is sorta old at when I’m posting this, but just came across the videos.

“We’re gonna be in the Hudson,” Sullenberger says at 3:29:28.

http://blog.wired.com/cars/2009/02/sully-calmly-to.html

More animations at the Wired.com