Kothar Labs Contact Me

CSView - A lightweight viewer for very large CSV files
Sun, 23 Oct 2016 / projects / csview

I've put together a lightweight CSV viewer which is capable to displaying very large CSV files very quickly.

The aim was to avoid the slow loading time of Excel, while keeping an easy to read grid-style layout for the data.

It doesn't do anything flashy at the moment - I have some ideas for additional features that I may add to future versions, but if you have any 'must-have' feature ideas, feel free to give me a shout.

Comments | Read more...

CSView

Backblaze B2 Performance Part 2
Sun, 13 Dec 2015 / projects / go / b2

After my earlier experiments with B2, I had an extremely interesting call with Backblaze about B2 features and performance.

Firstly, they have recently added a caching layer to speed up serving repeatedly requested files. This reduces the delay as the file is reassembled from Reed-Solomon slices. They also suggested that I do some new tests, as they thought I should be seeing faster speeds, even for first-access.

Comments | Read more...

Backblaze B2 and Go
Mon, 30 Nov 2015 / projects / go / b2

I've been implementing a Go client library for the Backblaze B2 cloud storage service: go-backblaze. It works extremely well, but is a bit slow to get files back.

Update 12th December: I've spoken to Backblaze, who have been working to improve performance. I have performed some new tests and written them up.

I've implemented a parallel download feature which you can use to download several files at the same time - this doesn't seem to affect the speed of individual downlaods very much, so I assume that the downloads are limited for one of two reasons

  1. There is a download speed cap in place
  2. The downloads each come from separate parts of the cluster file system, and so don't affect each other.

Downloading 5 copies of the same file in parallel doesn't seem to affect the download speed, nor do 5 sequential downloads. Whatever you do, each download seems to run at about 200KiB/sec.

Comments | Read more...

Magnets
Sat, 10 Oct 2015 / projects

After reading this article about Magnetic Poetry I was taken by the idea that the fridge was no longer the central notice board of the home:

Our age-old impulses haven't gone away—changes in technology have just encouraged us to take them elsewhere. “It used to be the fridge door was the center of the home,” Kapell says. “That’s where people would hang their kids’ art, leave notes for each other, put pictures, all that stuff.”

So, I thought I would create a digital magnetic notice board, replete with fridge poetry, postcards and photos. I've got a few loose ends to tie up, but I'm pretty happy with the proof of concept.

Try it out! magnets.kothar.net

Comments | Read more...

Magnets screenshot

Languamatch
Wed, 13 May 2015 / projects

Languamatch is a service for locating language exchange partners based on shared interests and skill levels.

languamatch.com

Comments | Read more...

Languamatch Chat

Furor
Thu, 7 May 2015 / projects

Furor is a web content curation tool for businesses.

furor.io

Comments | Read more...

Furor

Organise Asana Projects
Thu, 26 Sep 2013 / projects / asana

I was faced recently with wanting to move Asana projects from one workspace to another. Unfortunately this isn't a feature in the Asana interface (yet).

There's a PHP script floating around GitHub which will copy tasks between projects. This requires you to do some manual checking of project IDs, and you need to create the target project in advance, so I've extended the script and written a front-end web interface for it.

You can get the source code on BitBucket.

Comments | Read more...

asana_1

File sync and cloud storage client comparison
Fri, 26 Jul 2013 / blog / cloud storage

I've been trying out a number of file sync clients recently, finding that many are trying to solve the same problem and meeting with varying success. Probably the best-known service in this category is Dropbox, but nearly every big cloud services company, and a multitude of startups which base their services on top of them, are providing a 'cloud drive' of some description.

Comments | Read more...

SlimTweet
Mon, 13 May 2013 / projects / slimtweet

SlimTweet tries to shorten a message by applying a set of rules. For example, and will be replaced by &, while it is will be replaced by it's.

Substitutions will be made one at a time until the message reaches a target length (140 characters by default).

If SlimTweet still can't make the message fit, it will start tweaking the Unicode characters which make up your message, without changing its appearance too much. For example, the digraph vi will be replaced by the roman numeral character . When rendered in a standard font, these substitutions are nearly inⅵsible.

slimtweet.kothar.net

Comments | Read more...

slim_tweet

Plex, SSL and Nginx
Sun, 24 Mar 2013 / blog

I've been experimenting with the Plex Media Server, and decided to have a go at securing remote access to the 'Web Client' interface using SSL (by default it runs over an unencrypted HTTP connection).

This post is essentially a gathering of instructions from where I found them on the internet.

Comments | Read more...

ExtJS 4.1.1a Repository Update
Thu, 6 Dec 2012 / projects / extjs-public

Another update to the repository today. ExtJS is bumped to version 4.1.1a, and the latest version of GXT - 3.0.1, also gains a new root in the repository.

Comments

Resampling for fun and profit
Wed, 5 Dec 2012 / blog

I'm a co-author on a paper which was presented at RTNS this year. Sadly I didn't have time to attend the conference, but it's nice to have been able to contribute!

Re-Sampling for Statistical Timing Analysis of Real-Time Systems

{image rtns2012_resampling}

Comments

rtns2012_resampling

Dynamic Disqus Instantiation
Tue, 28 Aug 2012 / blog / gwt / disqus

I needed to use Disqus from a GWT app, so I needed to solve the problem of loading threads on demand as virtual pages in the app were changed.

A small amount of reverse engineering and experimentation led me to construct a utility class (below).

I also posted this answer on Stack Overflow.

Comments | Read more...

Spotify for Linux media keys with DBUS
Wed, 11 May 2011 / blog / spotify

Now that Spotify has discontinued the free account, and restricted me to an 'open' account with only 10 hours of music a month, I've ended up paying for an 'unlimited' account.

While I'm a little disappointed with this turn of events, it does mean I am now able to use the Linux client. It seems pretty decent so far, but I wanted to map some keys to do things like play/pause and next.

Comments | Read more...

Lock-Free IPC
Wed, 16 Mar 2011 / blog / programming

I was doing some reading a while back into lock-free algorithms for multi-threaded communication using buffers. The general idea is to use a circular buffer in shared memory to allow one process (or thread) to write data into a buffer so that another process can read it. The algorithm relies on atomic compare-and-swap instructions, which are part of the x86 instruction set and also present in several other architectures which have features designed to assist with concurrency.

Comments | Read more...