Yet another fast CSS3 selector implementation

written by jedi on November 12th, 2008 @ 04:07 PM

Samuel "Xilinus" Lebeau released Bouncer, yet another CSS3 selector implementation.

It still lacks some features, there's no benchmark yet, but it doesn't use eval(), it doesn't use listeners, it works bottom-up and the code is very small and slick.

What's the fastest in-memory associative arrays library?

written by jedi on November 6th, 2008 @ 10:46 PM

Using the maptest.cc benchmark :

(time for insert and for find) :

Tokyo Cabinet   : 0.40563   0.25999
STL map : 2.63157   1.51657
STL multi map   : 2.54474   1.46864
STL set : 2.34127   1.43893
GNU hash map    : 0.75396   0.48303
Google dense hash   : 0.74089   0.41089
Google sparse hash  : 2.06608   0.4709

The C++ standard library is clearly the big loser, regardless of the method.

Tokyo Cabinet just beats everyone.

GEMA is now open source

written by jedi on November 2nd, 2008 @ 11:13 PM

Ahaha, since I just found the source code on a old floppy, here's a big (...) thing:

GEMA is now open source and in public domain.

Here's the link to download GEMA source code and DOS binaries.

GEMA is an assembly language compiler I wrote in 1994, designed to write whole projects (ie. demos) in assembly.

It was used a lot by people coming from the Atari / Amiga demo scene.

The last version was released in Danemark during "The Party V" demo-party.

It was also the very first project I wrote in C language, and also the first code I wrote on a PC (just coming from the Atari world...). It's nice to see that it still compiles fine, 14 years later, even on Linux and OSX.

It's now useless, there's probably zero reason to use it in 2008, so the release of the source code is only for fun. But who knows, maybe it might still be useful to some lost souls.

Online version of OpenOffice.org 3

written by jedi on October 29th, 2008 @ 02:31 PM

Here's a serious challenger for Google Docs: through Ulteo, it's now possible to run OpenOffice.org 3 online.

No need to install anything, a Java-enabled browser is enough and you got 1 Gb of free storage.

C++ backend for haXe and AS3->haXe converter

written by jedi on October 28th, 2008 @ 06:41 PM

Great news for haXe coders.

haXe can now compile to C++ source code in order to produce native (Windows, for now) executables.

Author says that it's about 5 times faster than Neko (and hopefully it will get more portable than Neko).

Another great announce : Don-Duong Quach released an ActionScript 3 to haXe converter. Yes, it finally happened. It's still an early release, but it opens a lot of doors to haXe. Converting Papervision3D, for instance, can be very useful. It will also help a lot AS3 coders to upgrade to haXe.

Optimize your Firefox SQLite databases

written by jedi on October 26th, 2008 @ 11:07 PM

Firefox 3 uses SQLite in order to store cookies, downloads, applications local storage, search history, etc.

Unfortunately, updating those databases adds holes. Files keep growing over time. It means waste of storage space and Firefox gets slower and slower.

The webappsstore.sqlite, places.sqlite and urlclassifier3.sqlite files can especially grow very large.

Some extensions like the Digg one also store data in a SQLite database.

In order to optimize these databases, here's what you should really do from time to time.

Close Firefox and run:

cd ~/.mozilla/firefox
find . -name '*.sqlite' -print -exec sh -c "echo 'vacuum;' | exec sqlite3 {}" \;

If you are on MacOS X, use:

cd /Users/j/Library/Application Support/Firefox/Profiles
find . -name '*.sqlite' -print -exec sh -c "echo 'vacuum;' | exec sqlite3 {}" \;

Of course you need SQLite to get installed on your system.

Matthew Dillon's NYCBSDCon 2008 slides

written by jedi on October 26th, 2008 @ 10:17 PM

The presentation of the HAMMER filesystem that Matthew Dillon made for the NYCBSDCon are now available.

A messy list of worthy software, part #1

written by jedi on October 23rd, 2008 @ 11:05 PM

For a long time, when I notice something that sounds cool, I write a few words about it in a very messy text file called "tools.txt". Then, I review these tools. If they suck, they are removed from the "tools.txt" file. If they are actually cool and useful, they stay.

While I really can't share the "tools.txt" file (way too messy), I'll try to share a summary of its content on that blog. Since it's quite long, it will be split into several blog articles. Older things first.

Drawing charts on web pages

  • Open Flash Chart is a program for creating charts in Flash to display in Web pages. You can create bar, line, area, and pie charts. It also includes server side classes to help generate the data file used as input. At the moment, there are classes for PHP, Perl, and Python.

  • Google Chart API lets you dynamically generate charts using Google.

  • Gruff for Javascript : Bluff is a JavaScript port of the Gruff graphing library for Ruby. It is designed to support all the features of Gruff with minimal dependencies.

Shared calendars

  • Cosmo project aims to provide a web calendaring application to support the Chandler project. In addition, it is a content/calendar sharing server to support collaboration with Chandler users. Chandler users will be able to share calendar collections with friends who do not use Chandler, iCal or any other desktop clients by providing them with Cosmo URLs for the collections.
  • Bongo is an easy-to-use mail and calendar system, offering a simple yet powerful user interface. The goal is to make sharing, organisation, and communication simpler, quicker, and more useful.

Rescue disks

  • Super Grub Disk - We want Linux newbies to restore their new toy, but also help the Linux advanced user make potentially dangerous operations to the MBR in a safe way. Super Grub Disk is also a teaching tool to help you learn more about bootloaders and the booting process. After all, booting is the most important thing your computer does -- without the boot process, you would not have an operating system to use!

Rich Text Editors

Memory leaks

CMS

  • ModX
  • Krang - great for things like online magazines

OSX Tip

How to use Time Machine on an unsupported network volume :

defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1

Memory data storage

  • Memory Structure Library - MEMSL is a complete data structures/collection classes library with memory tracing, memory debugging, entry/exit tracing, exception handling, definable memory handlers, built-in thread support, and much more. It supports single, double, and circular linked lists, AVL balanced and threaded binary trees, dynamic hashing tables, stacks, queues and dequeues (using arrays or linked lists), sets (Pascal implementation, with union, difference, intersection, etc.), bags, tables and dictionaries, priority heap, priority search queue, and more.
  • JumboMem gives unmodified binaries transparent access to memory spread across multiple computers. The goal is to improve the performance of memory-hungry applications by replacing accesses to a slow paging device (a disk) with accesses to fast RAM located across a high-speed network. Unlike other memory servers, JumboMem does not need administrator privileges either to install or run.
  • CSQL is updateable bi-directional table level caching solution to improve application performance by 20-100 times. It can also be used as ultra fast stand alone SQL Main Memory Database.
  • The Erwin library is a very efficient and robust data structure template library for C and C++. No templates are used; a Perl script generates C files. Vectors (dynamic arrays), lists, and hash tables (maps) of arbitrary key and value types are provided. Several tools are included for auto-generating a C interface around C++ libraries, C++ extensions like slots/properties, symbol (=hashed string) management, sophisticated assertion macros, and documentation extraction.
  • Memagent is a simple but useful proxy program for memcached servers. Supports ketama algorithm.
  • Flared is Yet Another Memcached (but disk based). This software provides high-performance, distributed and fault tolerant objectstorage system w/ almost-memcached-compatible I/O interfaces.
  • memcache-pro is a patch memcached for adding "cget","cappend" and "cprepend" commands. cget-allow you get a key-value then clear value(not delete) in a atomic operation. cappend-allow you append a value to a key, then cut the value to the max length you set in command in a atomic operation. cprepend-allow you prepend a value to a key, then cut the value to the max length you set in command in a atomic operation.
  • memcacheq - queue service over memcache - uses BDB (unfortunately)
  • Sparrow is a really fast lightweight queue written in Ruby that speaks memcache. Sparrow keeps messages in memory, but persists them to disk, using Sqlite, when the queue is shutdown. Basic tests shows that Sparrow processes messages at a rate of around 1660 per second. The load Sparrow can cope with increases exponentially as you add to the cluster. Sparrow also takes advantage of eventmachine, which uses a non-blocking io, offering great performance.

An unofficial Prototype and Scriptaculous Wiki

written by jedi on October 19th, 2008 @ 12:46 AM

A cool Wiki with very helpful tips related to Prototype and Scriptaculous libraries : the Unofficial Prototype and Script.aculo.us Wiki.

While getting less marketing that some other libraries, Prototype and Scriptaculous are very well-designed and effective libraries. The only thing they need is more chat places. Such a wiki is a great step to help people discover or share their experiences with the libraries.

As soon as I'll have some spare time, I'll probably open a web site dedicated to those as well, especially to summarize available resources and to bring up a discussion board.

Prototype 1.6.0.3 has been released

written by jedi on September 29th, 2008 @ 05:23 PM

Finally! A new release of the excellent Prototype library has seen the light.

It fixes all known bugs, it is now Google Caja-compliant, it uses the W3C selectors API if available, and overall performance has improved.

Download Prototype 1.6.0.3 while it's hot!

Extensions for the prototype.js library

written by jedi on September 27th, 2008 @ 11:16 PM

Here's a nice site with some extensions for the Prototype javascript library

It cries for more contributions. But I think the main reason is that not a lot of people know that such a site exists.

So here's the link, and enjoy the Prototype library.

And by the way, here's a cool extension for Prototype developpers : Prototype Xtensions.

And some other cool articles/links about Prototype are available on Ajaxian.

Nostalgia

written by jedi on September 11th, 2008 @ 11:46 PM

My very first code on PC... GEMA... It was 14 years ago...

Click here to download GEMA or rather to have a look at what it was.

A gate to hell. An helper to blindly move from the wonderful Atari / Amiga scene to the boring world of PC.

Oh shit, computing was so fun, and it's now so boring.

OSBF-Lua is still the best spam filter in the world

written by jedi on September 1st, 2008 @ 05:42 PM

OSBF-Lua won yet another spam filter challenge.

The CEAS 2008 Spam Filter Live Challenge results have just been published and OSBF-Lua was number one by both criteria : LAM% and 1-AUC%.

OSBF-Lua is also extremely fast. And the Fidelis Assis OSB algorithm is now the default classifier for CRM114.

A DragonflyBSD live DVD

written by jedi on August 31st, 2008 @ 11:27 AM

If you ever want to test DragonflyBSD without any installation, download the first version of the DragonflyBSD live DVD made by Louisa Luciani.

The documentation can be found here: documentation of DragonflyBSD live DVD.

A simple, powerful and fast mail delivery agent

written by jedi on July 6th, 2008 @ 01:05 PM

I always used a different email address for each web site and each mailing-list. Sorting incoming email to the right folders is as simple as creating .qmail files.

But at the office, we don't have multiple email addresses. All goes to a single mailbox. Corporate emails, spam, mailing-lists, bug reports, everything goes in the same POP3 account with the same envelope recipient.

Fetchmail is known to be bogus, so until now I used getmail in order to fetch that email. Getmail did the job, but I never liked it. It's slow: it needs 50% horsepower of a 2 Ghz VIA C7, that's unacceptable for such a simple task. And the syntax is counterintuitive. And it's unable to filter based on recipients without the need of external applications.

Maildrop is such an application. It's supposed to be more user-friendly than Procmail. Sorry, but I never could stand it either. Forget a space or an useless unexpected coma after a closing parenthesis and you got a syntax error. Doing basic things is complicated. Sure, it works. But that's yet another complicated piece to a simple puzzle.

Today, I tried FDM. Wow! That's the mail client/delivery agent that I was looking for. Python could be uninstalled, as FDM is written in C++.

FDM can fetch email through POP/IMAP, it can filter it and deliver it muliple ways.

Finally! A piece of software without a brain-damaged syntax. The syntax is simple yet powerful. The TDM-based cache rocks. Rules can also include presence of attachments. It can track new and old messages. Working with regexes, multiple mailboxes and multiple destinations remains simple.

It's fast. It's portable. It works. It doesn't lose mail when something is wrong in the configuration. It has no known security flaw.

It's just perfect. Thanks a million to Nicholas Marriott for this beautiful piece of software.

Options:

Size

Colors