[via Lifehacker]
Latest Updates RSS
-
manalang
-
manalang
Google Trends allows you to compare search queries. A great time suck.
-
manalang
Having worked with PeopleSoft for over ten years, I’ve had the pleasure to experience the joy in building enterprise applications with a rapid and productive environment called PeopleTools. Although PeopleTools is now out-dated in comparison to more modern frameworks, it was (and still is) the most productive development framework I’ve ever worked with (i.e., for building enterprise applications). (More …)
-
manalang
My wife just passed an email to me with really good information on cancer. As someone who is affected by cancer, I think this information is something everyone should know about.
-
manalang
-
manalang
I started playing around with IMified a few months ago when it launched, but haven’t used it again until today. When I first used it, I thought that it would be much more useful if they allowed others to develop on top of it. Looks like they did just that by introducing a very simple API for users to create their own services on top.
The best part about their API is it’s super simple and you host the service yourself. You can create a service just for yourself or a public service that can be shared with the rest of the world. It’s all very, very cool.
This (along with Twitter) is a game changer in the IM world (I think). IM can be the new command line for the internet. Here are some ideas of what services can be built on top of IMified (from their site):
- Price checker
- Movie listings
- TV listings
- Budget manager
- Deal Search
- Sports scores
- POP email
- Finance
- Language translator
- Domain search
- WiFi hotspot finder
- Dictionary
-
manalang
Just testing if posting from IMified works as advertised. If it does, I think there are many uses for this since they have a pretty good API.
-
manalang
I spent this past Monday attending the Web 2.0 Expo in San Francisco. I got a good taste of the Web 2.0 entrepreneur’s fervor for this business. It’s pretty wild to see so many passionate billionaire wannabes under one roof. One of my colleagues (Paul) nails the essence of Web 2.0 in this post:
“Having spent the last three days at the Web 2.0 Expo in San Francisco, I have seen lot of companies. There are some great ideas and some rather foolish ones, but what has struck me is the power of simplicity.
I am not talking about simplicity in the usual context of User Experience (UI). We are all well aware that simple design is a maxim of Web 2.0, but I am more interested, and frankly impressed, by simplicity on the dimension of idea. The real question you need to ask is, how simple is my idea?
The power of simple ideas as they relate to Web 2.0 is critical and truly drive the success or failure of a business. Again, in stark contrast to the quality of UI driving success. Now, I am a huge fan of elegant UI and I really don’t enjoy ugly applications, but it is not a key principle to a successful on-line business. For all who doubt that, go to eBay and post a product for sale. Now imagine that interface when they launched. Yes, it’s better now. No, it’s not a great experience. Yet, here they are.”
To me the user experience is a central component to the Web 2.0 success. There are other aspects, but nothing encapsulates all of those ideas better than, “Simple.” Most companies who experienced success at one point, did so because they either had a simple product, idea, or service that their customers were passionate about. If a company is lucky, they can continue to capitalize on simplicity of their business, but often times they become complex and unwieldy… like most big organizations.
In a Web 2.0 world, simplicity is key.
Technorati Tags: web2.0, entrepreneurship, startuping
-
manalang
When you stop blogging, it’s really, really difficult to pick it up again. In February, I decided to do just that. And why not, I’ve got so much to share about the past year that I should write about it.. and most of it actually can benefit the readers of this site. However, my attempt to pick it up again has been met with writers block. The more you put it off, the harder it is to get back on track. So, I’m going to jump start this thing again… let’s see how I do this time around.
-
- trying to figure out how long urls get shortened by twitter… http://www.thelongestdomainnameintheworldandthensomeandthensomemoreandmore.co #
- ah… doesn’t look like twitter shortens the URL… they should! #
- interesting… looks like it is tinyurl’ized if it has query params… http://tinyurl.com/ywl8ly:en-US:official&client=firefox-a #
- looks like it has bugs though… #
Powered by Twitter Tools.
-
- loading languages into the portal demo db from the apps… pretty boring stuff #
Powered by Twitter Tools.
-
Powered by Twitter Tools.
-
manalang
- thinking of how twitter can be useful for my work #
Powered by Twitter Tools.
-
manalang
It’s been exactly one year since I posted to this blog. A lot happened last year. It was a very trying year. I didn’t intend to leave this blog behind, but life happened and I realized that things I thought were important really weren’t. So, the blog went out the door… for a year at least.
But now a year has passed and I’m still here… and hopefully will be posting on a more regular basis.
-
manalang
In early 2004, 37 Signals popularized the Yellow Fade Technique. Lots of variations followed. Recently, I’ve had to use the YFT on one of my projects but I didn’t like any of the existing alternatives including 37 Signal’s own YFT implementation. And so, I offer my variation to the YFT.
// Yellow fade technique var yft = { _shade: {1:'ff', 2:'ee', 3:'dd', 4:'cc', 5:'bb', 6:'aa', 7:'99'}, fadeIn: function(e,i) { if (i >= 1) { var elem = $(e) if (elem) elem.style.backgroundColor = '#ffff' + this._shade[i]; else return; if (i > 1) { i -= 1; setTimeout("yft.fadeIn('"+elem.id+"',"+i+")", 200); } else { i -= 1; setTimeout("yft.fadeIn('"+elem.id+"',"+i+")", 200); elem.style.backgroundColor = "transparent"; } } } }Note, that this does require the use of Prototype. -
manalang
Just a side note for those of you Ajax junkies out there… I’ll be speaking at The Ajax Experience in San Francisco on May 11th. Looks like a fabulous line up of speakers (Alex Russell of Dojo, Thomas Fuchs of Scriptaculous, and many, many more). If you’re interested, register now. I’ll be speaking about Monkeygrease and some of the cool stuff I’m doing with it. -
manalang

-
manalang
In the past week I’ve been playing around with PeopleSoft’s built-in search engine (Verity) to come up with a better search experience for users. Riding on the wave of Google Suggest a lot of people have implemented a “live” search feature on their sites. So, I decided to sprinkle a little AJAX on top of PeopleSoft and build the same feature for Enterprise 8.4 and above. Check it out…
The most unbelievable thing about how I implemented live search on PeopleSoft is that I didn’t customize any delivered code. None. This was possible because of Monkeygrease. Monkeygrease allows me to “inject” JavaScript/CSS/HTML into a page before it’s delivered to the browser. On the back end, I created a simple PeopleSoft iScript to carry out the search and return the results in a
<ul>tag… I thought about using JSON, but then that would have added more complexity to the JavaScript.Here’s the iScript:
[WEBLIB_CSS_LSCR.ISCRIPT1.FieldFormula] Function FormatPath(&Path As string) Returns string Local number &i, &begin, &end; Local string &stringToSearch, &stringToCut; &stringToSearch = &Path; &begin = Find("{", &stringToSearch); While &begin > 0 &end = Find("}", &stringToSearch); &stringToCut = Substring(&stringToSearch, &begin, &end - &begin + 1); &stringToSearch = Substitute(&stringToSearch, &stringToCut, ""); &begin = Find("{", &stringToSearch); If &i = 1000 Then /* Safety break */ Break; Else &i = &i + 1; End-If; End-While; Return Substitute(&stringToSearch, ".", " > "); End-Function; Function IScript_doSearch() Local string &q, &node, &partialUrl, &fullUrl, &resultsHtml; Local number &resCounter; Local ApiObject &portal, &query, &results, &result, &cref; Local Request &Request = %Request; Local Response &Response = %Response; REM If no query text avail, return nothing; &q = &Request.GetParameter("q"); If &q = "" Then Return; End-If; &portal = %Session.GetPortalRegistry(); &portal.Open(%Portal); &query = &portal.GetSearchQuery(); &query.Language = %Language; &query.QueryText = &q | "*"; &query.RequestedFields = "CONTENT_PROVIDER,URL,SCORE"; &query.SortSpecifications = "SCORE desc"; &results = &query.Execute(1, 20); If &results Null Then &result = &results.First(); Else &result = Null; End-If; &resCounter = 1; While &result Null &node = &result.SearchFields.ItemByName("CONTENT_PROVIDER").Value; &partialUrl = &result.SearchFields.ItemByName("URL").Value; &fullUrl = &portal.GetAbsoluteContentURL(&node, &partialUrl); &cref = &portal.FindCrefByURL(&fullUrl); If &cref Null Then If &cref.Authorized And &cref.isVisible And (&cref.URLType = "UPGE" Or &cref.URLType = "UEXT" Or &cref.URLType = "USCR" Or &cref.URLType = "UGEN") Then &resultsHtml = &resultsHtml | GetHTMLText(HTML.CSS_LIVE_SEARCH_RESULT, &cref.Label, &cref.AbsolutePortalURL, FormatPath(&cref.Path), &cref.Description); If &resCounter = 8 Then Break; End-If; &resCounter = &resCounter + 1; End-If; End-If; &result = &results.Next(); End-While; &portal.close(); If &resultsHtml "" Then &Response.Write(GetHTMLText(HTML.CSS_LIVE_SEARCH, &resultsHtml)); End-If; End-Function;There are two functions in this iScript, FormatPath and IScript_doSearch. FormatPath just formats the path location of the search result item (where it’s stored in the portal registry). The IScript_doSearch is what calls the Verity API to carry out the search. In this function, I filter each result through the portal registry to see if the user has access to the item. This iScript performs amazingly well.
The iScript above references some HTML objects… here they are:
[HTML Object: CSS_LIVE_SEARCH] <ul> %bind(:1) </ul>
[HTML Object: CSS_LIVE_SEARCH_RESULT] <li> <a href="%bind(:2)" title="%bind(:4)" target="_top">%Bind(:1)</a> <div>%bind(:3)</div> </li>
The the only other things I needed to do was code up the JavaScript and CSS to insert into the page. You can view those here: live-search.js and live-search.css. I then “injected” these files via this Monkeygrease rule:
<rule enabled="true" name="Live Search" url-pattern="(/psp/?([^/]*)?/?([^/]*)?/?([^/]*)?/(h/|s/WEBLIB_EO_PE_LN\.ISCRIPT1\.FieldFormula\.IScript_EPPLN_INFRAME)|/psc/?([^/]*)?/?([^/]*)?/?([^/]*)?/s/WEBLIB_PT_NAV\.ISCRIPT1\.FieldFormula\.IScript_PT_NAV_INFRAME_TITLE).*" insert-at="head-end"> <![CDATA[ <script type="text/javascript" src="http://some.server.com/monkeygrease/lib/prototype.js"></script> <link rel="stylesheet" href="http://some.server.com/monkeygrease/live-search.css" type="text/css" media="screen" /> <script type="text/javascript" language="javascript" src="http://some.server.com/monkeygrease/live-search.js"></script> ]]> </rule>As you can see from these Monkeygrease rules, the prototype.js library is required. I used this library to simplify the code… and it did just that.
-
manalang
In honor of Ta-Da List’s 1st birthday, I present it with my latest Greasemonkey script that integrates Ta-Da List with Backpack… as well as add some nice enhancements on top of Ta-Da List. Get it here.
-
manalang
About a year and a half ago, I thought up WP-Amazon as a way for Wordpress users to be able to easily include links and images of products from Amazon into their blog postings. Basic and simple… that’s what I was going for. Since I released it, I didn’t spend much time beyond bug fixes and simple enhancements. For the most part, the plugin just worked and still does today with Wordpress 2.0. One of the most fascinating things I find about WP-Amazon is the way people are using it to make money. I’ve made a few bucks here and there… not much, just enough to pay for my hosting fees.
I’d love to hear from those of you who have found WP-Amazon helpful in generating a little cash. Also I’d appreciate any feedback on what can be done to make WP-Amazon better. I’m currently working on WP-Amazon 2.0 and it’s got lots of nice enhancements like an Ajax interface and lots of DHTML goodness. I’d love to hear your ideas on what can be improved.


