Projects

Recent Changes

You can now rename feeds in Feedme.

I made a slight change to the indexer - if an item got updated I used to clear the list of accounts that have read that feed so that people will see the update. The thing is.. feeds are very unreliable in which fields they support, so I have to check if the title, link or body changed in order to know if it got updated. For some reason for many feeds the body keeps changing even though the content didn’t actually change. This is incredibly annoying because every 6 hours when feedme indexes again you get the same old items. So.. for now I just don’t clear that list anymore. If an item was marked as read, then it is marked as read forever. If it got updated before you read it, then you still get the latest updated version.

Otherwise.. I am really happy with it. I don’t actually want to add anything to it, really - I’m going to keep the minimalist nature. The only thing I now plan to add is a way to export your feeds to an OPML file. I decided not to support importing OPML files. After that I’m going to effectively consider this app done except for bugfixes and maybe a nicer homepage.

Feed me! has gone live

I finally installed seymour as Feed me! on a subdomain for now: feedme.opensores.za.net.

It is running on a 256MB slice.

TODO:

  • Sometimes feedfinder still doesn’t find feeds if you give it a URL that contains feeds, but isn’t a feed in itself. It is supposed to give you a nice error message at the very least..
  • I think there’s an issue with embedded things like youtube videos, but can’t remember the details. I’ll have to investigate.
  • You can’t rename feeds - it uses the title the feed specifies for everyone. For some reason not everyone’s feeds are well named..
  • Currently you can’t import/export OPML feeds - I plan to implement it shortly.
  • I still have to put the code up somewhere. Just figuring out how best to host a bzr repository.

Anything else.. please contact me.

Feed me! (Seymour)

I ended up writing a feed aggregator inspired by Newshutch. It just needs a tiny bit of polish before I’ll deploy it somewhere.

Here’s a sneak peak in the meantime:

feedme.png

It uses Django, Universal Feed Parser and feedfinder.

I plan to host it myself (under the name “Feed me!”), but it will be open source. The project is called “Seymour”.

Feed me - an RSS reader

I only found out last night that Newshutch shut down in October already. I used them for a while in 2006 to 2007 - it was a very well designed app. (see Beautiful interface: Newshutch on Signal vs Noise.)

I stopped using them because I just stopped tracking blogs in general - I realized that I fell into this routine of consuming information all day, wasting my time and generally not doing anything myself. I was just procrastinating and tracking blogs became a big part of the problem. So I stopped using Newshutch and I immediately got this surge of productivity ;)

Anyway.. they had some great ideas and it is a shame to see them go to waste. I had insomnia last night and for some reason decided that I should write an RSS aggregator myself just because the remaining options suck so badly. Decided to mock up some HTML and CSS for the interface and this is it:

feed_me.png

(yes - that’s a random Tango icon for the moment. It should ideally be a cute little green monster or something)

The left column is fixed and the right one scales and takes up the remaining space. The idea with the footer is that it might contain other links and text.

Ni development screenshot

ni_gtk.png

I should have a release ready soon…

Progress update for my text editor

It’s been a while since I first blogged about ni. I’ve been working on it from time to time and I made quite a bit of progress. I hope to put up a bazaar branch somewhere soon (I know - all the cool kids are using git).

Keep reading →

ni: a text editor

Started working on a text editor a little while ago. I always wanted to write my own text editor, but seemed to lack the inspiration to get me started. Then I discovered emano by Sean B. Palmer and I finally managed to convince myself that it actually might not be that much work.

Ni can probably be best described as a programmer’s code editor framework in the making. I started from scratch and I’m trying to get the different components that make up an editing environment abstracted to the point that you can easily build editor interfaces on top of this common codebase. The idea is that I can get to the point where I can play around with different user interface ideas without reinventing the wheel every time. Everything is written in Python.

As a kind of “reference implementation” I’m building a term editor first using urwid. After this I’m planning to build a GTK/GNOME editor that will probably not use gtksourceview, but something like pango and cairo directly. I wrote some more about this that I’ll put up somewhere shortly, but basically gtksourceview is already an editor imho, so using it approaches the problem from the wrong way around. Think of ni as a modern-day Emacs or VIM where you can use it from the terminal or a GUI.

What’s done so far? I’ve got the basic code structure going, but I’m constantly refactoring, so this is likely to change. You can create documents, switch between them, load them, save them and close them. There are some basic dialogs - so far only the type that runs in that status-line at the bottom of your typical term editor. Syntax highlighting using pygments (had to do some interesting hacks to only lex and display parts of the document at the time to boost efficiency), undo, redo, make selections by holding down shift, cut, copy, paste selections using ctrl-x, ctrl-c and ctrl-v, delete selections, navigate around using the keys, home, end, page-up, page-down.

The main features the term interface is still lacking in my opinion are auto-indent, a document list dialog/window and find/replace. Apart from that I think the term interface can do with some minor improvements like visually indicating if I file has unmodified changes.

I’m getting a lot of inspiration from JEdit. JEdit’s hypersearch find/replace is absolutely amazing and I plan to mimic that. Also, I’m trying to use the same key bindings as far as possible, but some just don’t seem to work in a terminal.

After this I’m starting on a GTK/GNOME based interface, but ultimately there should be no reason why there can’t be a QT/KDE one, a Mac OS X one, a Windows one, etc.

Will put up a project page and bazaar branch shortly!

AJAX code duplication

One thing I realised recently while adding some ajaxy functionality to Dynamo is that I end up duplicating code. Some screens in Dynamo allow you to upload files without reloading the screen. You upload a file and it adds it to the Javascript array of file objects (some JSON and AJAX magic happens in between, ofcourse) and then it has to redraw the files list by looping through the files in the array, building the html dynamically and then replacing the old html. The same thing happens with things like post categories.

The problem is that I have to output the list when the page loads. You can do something like only load the list of files or categories or whatever after the page loads and then output them using Javascript, but this is inefficient and slow and sometimes you see the page without the list for a split second and it gets worse over slower links. So far my best idea has been to output the list when the page loads which in my case means inside my Django template, but often I add something to the template and then I have to remember to add the same thing to the Javascipt that redraws the list after AJAX requests.

You can ofcourse go with a more low-tech way of doing things and return the html snippet with the latest list after every AJAX request, but I prefer having a copy of all the data so that I can use it in my Javascript.

I now got this idea for implementing just the basics of the Django template engine in Javascript. Then I can load in the same Django template I use initially and render it inside Javascript.

I wonder if this counts as overengineering things.. Has anyone done anything like this before?

ligHTTPD, FastCGI, Apache2, SCGI and Django deployment adventures

I went through a bit of trouble while deploying django with fastcgi recently and I thought I might as well post about my findings, because it might be useful to some people and if I don’t, it will be lost ;)

Apache 2’s fastcgi support is a bit lacking, so I turned to lighttpd. I have used it before and I really liked it. Apart from just having the right feel, I found it quite lightweight and easy to configure. Therefore I really wanted to use it again.

Then I ran into some segfaults. The documentation is not always very clear and therefore it actually gets quite difficult if you do stuff like more complicated rewrite rules.. I added a ticket to trac here.

I then remembered reading about SCGI on FLUP’s page, so I started doing some research on the differences between FastCGI and SCGI. Here are some links I found:

I then did an “apt-cache search apache2 scgi” and found that there is actually a SCGI module for apache2. I was about to try it out when I started closing all the firefox tabs I opened while reading up on SCGI and noticed something mentioning that %x are backreferences to the conditional.. My immediate thought process went something like “Wait a minute. I’m not using a conditional…..” Then I quickly fixed my lighttpd configuration and now it works.

This means I’ll probably never bother trying out SCGI.