(note (code cslai))

Notes on codes, projects and everything

2016 January

• Further Hack on the Multi-Dimensional Approximate Neighbour Search

Traversing a tree structure often involves writing a recursive function. However, Python isn’t the best language for this purpose. Therefore I started flattening the tree into a key-value dictonary structure. Logically it is still a tree, but it is physically stored as a dictionary. Therefore it is now easier to write a simple loop to traverse it.

• Approximate Neighbour Search in Multiple Dimensions

In the previous post, I re-implemented Annoy in 2D with some linear algebra maths. Then I spent some time going through some tutorial on vectors, and expanded the script to handle data in 3D and more. So instead of finding gradient, the perpendicular line in the middle of two points, I construct a plane, and find the distance between it and points to construct the tree.

• Re-implementing Approximate Nearest Neighbour Search

Recently I switched my search code to Annoy because the input dataset is huge (7.5mil records with 20k dictionary count). It wasn’t without issues though, however I would probably talk about it next time. In order to figure out what each parameters meant, I spent some time watching through the talk given by the author @fulhack.

• Information Retrieving with ….. a lot of libraries

Implementing a Information Retrieval system is a fun thing to do. However, doing it efficiently is not (at least to me). So my first few attempts didn’t really end well (mostly uses just Go/golang with some bash tricks here and there, with or without a database). Then I jumped back to Python, which I am more familiar with and was very surprised with all the options available. So I started with Pandas and Scikit-learn combo.

Random Posts

• The Little Pythoner, Part 3

Previously, I started practising recursions by implementing a type check on lat (list of atoms), and `ismember` (whether an atom is a member of a given lat). Then in the third chapter, named “Cons the Magnificent”, more list manipulation methods are being introduced.

• Using YUI for DOM Manipulation

After being frustrated of not getting consistent and accurate result via standard DOM methods especially `html_element.getAttribute('key');` and `html_element.setAttribute('key', 'value');`, I came across some YUI library components that provides abstractions to various DOM methods. Some interesting DOM-related tools covered in this post are `YAHOO.util.Element`, `YAHOO.util.DOM` and `YAHOO.util.Selector`.

• HACK: Automount sshfs to my Jolla Phone in Ubuntu 14.04

I haven’t got much time lately, so didn’t write about this new phone that I recently imported. For some reason, this new phone of mine do not act as mass storage device like its predecessors (to certain extend). Thankfully I can still ssh in the phone and this makes it possible to mount it as a sshfs volume.

• Seriously, What can I do with Semantic Web?

Semantic Web always sounds like some magic power stuff that a group of people keep yelling about. Chances are, if one is into web development, he/she would have heard of it somehow or other. However, despite the supposedly wide awareness about it, are we using it? Or rather, am I publishing enough data to Semantic Web? OK, I don’t, but why?

• 4 Fundamental Things in Programming (pre-101)

Just recently I volunteered to do a pre-101 kinda workshop for people wanting to learn programming. I had done this a few times in the past, but in different settings and goals in mind. The whole structure predates the sessions but I can’t remember when I first created them.

(more…)