Supermind Search Consulting Blog 
Solr - Elasticsearch - Big Data

Posts about work

Firefox..thank you

Posted by Kelvin on 11 Nov 2004 | Tagged as: work

Today i move from Opera to Firefox (Preview Release). Having the usability of Firefox plus the ability to map my own keyboard shortcuts, add an 'x' to tabs to close them plus many many more extensions just make sense.

The only feature of Opera's I'm missing is searching google from the location bar by prepending a 'g' in front of the search terms, and going to the next page by hitting the space bar when at the end of the page, like in Google. Still, I'm confident of adding these changes to Firefox as extensions. That's how way cool Firefox is.

From what I see so far, ScreenReader can also be developed as a Firefox extension. Cool, or what? As a bonus, my WordPress edit form renders properly in Firefox, where it was a little screwy in Opera. Goodbye Opera…

Update 36 hours later:
Searching via the location bar is done via what Firefox calls Quick Searches, and its way cooler than Opera, coz any bookmark can be searched that way. I don't even know why people bother with the search bar with this killer feature. Of course, it requires a little knowledge about how HTTP forms work. Now the only thing I'm missing from Opera is the spacebar-to-next-page feature in Google.

I've installed Adblock and suitably impressed. I no longer use Proxomitron. The only thing Adblock doesn't do is match (and remove) text patterns like Google's Sponsored Links.

I've also found that pressing Ctrl whilst left-clicking a hyperlink opens the website in a background tab/window. Useful for Google searching.

My current list of extensions (Firefox 1.0.5 release):
Scrollbar Anywhere http://perso.wanadoo.fr/marc.boullet/ext/extensions-en.html
SessionSaver http://www.extensionsmirror.nl/index.php?showtopic=166
QuickTabPrefMode http://jedbrown.net/mozilla/extensions/#QuickTabPrefToggle
ImagesShowHide http://imageshowhide.mozdev.org/
Adblock http://adblock.mozdev.org/
Tab X http://extensionroom.mozdev.org/clav/#tabx
Keyconfig http://forums.mozillazine.org/viewtopic.php?t=72994
Download statusbar http://downloadstatusbar.mozdev.org/
Tab clicking options
Super Drag and Go
Web Developer Extension
Download Status bar

Python and Cheetah

Posted by Kelvin on 29 Oct 2004 | Tagged as: work, programming

Had my first stab at a python app: a web contact information db for the German intensive course I'm attending. Used Cheetah, a Velocity-like template engine for python. There are minor differences between Velocity and Cheetah, but these are minor – I was productive in about 30 minutes.

I really like Python. Things just work.

Installing mu-conference-0.6.0 with jabberd 1.4.2

Posted by Kelvin on 03 Aug 2004 | Tagged as: work

Got mu-conference-0.6.0 up running with jabberd-1.4.2 on a Red Hat 8.x.

Steps I took were:

  1. Did abit of a merry go-round with the package dependencies for compilation of mu-conference. That's no surprise, with RPM's horrible dependency management. Compared with Mandrake's urpmi, RPM sucks big time. Anyway, I had to download glib2 and glib2-dev which had dependencies on pkg-config and glib2-texttize (may be a typo there).
  2. After installing pkg-config, mu-conference source still wouldn't compile, with pkg-config complaining it couldn't find glib-2.0.pc. I did a search, found the directory where pkg-config stores .pc files (/usr/lib/pkgconfig) and found glib-2.0.pc there! So, I set PKG_CONFIG_PATH=/usr/lib/pkgconfig and that did the trick.
  3. Chose not to use Jabber Component Runtime (JCR) coz I didn't need to. Untarred mu-conference into jabberd source folder and followed installation instructions.
  4. Chose to run mu-conference as a seperate jabberd process since that was what was recomended in the docs.
  5. Tested the conferencing with Exodus-0.9.0 and everything seems to be working.

Cool! Total time taken: ~2 hours

Open-source Code

Posted by Kelvin on 04 Jun 2004 | Tagged as: work, programming

A compilation of code I've written.

Code in Apache repositories is licensed under the Apache License. Everything else is licensed under the BSD License unless otherwise stated. I understand the BSD license to be less restrictive than the Apache License in that it doesn't require the attribution notice "This product includes software developed by…".

Jakarta Commons Configuration

  • XMLConfiguration (view|download)
    Summary: Access an XML configuration file in the same way as Java properties.

Jakarta Lucene

  • ChainedFilter (view|download)
    Summary: Allows multiple Filters to be chained.
  • Javascript Query Validator (view|download)
    Summary: Javascript validation for Lucene queries
  • Javascript Query Constructor (view|download) documentation
    Summary: Syntactic sugar for query construction in Javascript.

Amazon Wishlist liberation
Uses Jakarta Velocity to transform Amazon wishlist into any format you wish.

XML Résumé Library

  • DVSL templates for rendering of an XML Resume in HTML, txt and PDF. (download)
    Instructions:

    1. Download/cvs checkout DVSL
    2. In one of the folders (I used the examples folder as a reference), extract resume-xml.zip.
    3. Customize xdocs/resume.xml. The zip file contains mine as a reference.
    4. Run 'ant' with one of the available targets: doall, pdf, html, txt

WinCVS Python Macros
Instructions: download the .py macros into your CVS_HOME/macros folder and restart WinCVS

* Open the file in a texteditor and search for "CHANGE ME" and edit accordingly

WordPress plug-ins

Thinking about CVS

Posted by Kelvin on 28 May 2004 | Tagged as: work

At Relevanz, we use CVS in the following way:

  1. There is a CVS repository called mb which contains the _product_. mb stands for Marketing Bright, our initial product. This codebase is what we use and re-use for every project we embark on. Ongoing product development happens in this repo as well.
  2. The mb repo is organized by modules, with each top-level folder constituting a module. Check out jakarta-commons' CVS. We have a similar CVS structure.

    There can be dependencies between modules. These are explicitly defined in the module's Maven project.xml file. These dependencies are resolved at build-time.

  3. A project that involves professional services/customization (find me one that doesn't) has its own CVS repository. A project has dependencies on modules depending on the project scope. These are also declared in the project's Maven project.xml file.
  4. In cases where the project needs to redefine/re-implement existing classes, then the developer will mimic the same directory structure of the file that needs to be forked, and introduce it to the project's CVS structure. For example, if a file in the mb repository with directory structure /mb/core/src/java/foo/bar/StringUtils.java needs to be forked. This will become /acme/core/src/java/foo/bar/StringUtils.java, where acme is the name of the project forking StringUtils.java.

    Note that the name of the file does not change. We handle this seeming conflict at build-time, by replacing mb repository's version with the customized version. Sounds HACKish? Yeah, coz it is. The alternative, though, is to create a branch on the file, and we tried that initially but it just didn't work out…

« Previous Page