All of the interesting technological, artistic or just plain fun subjects I'd investigate if I had an infinite number of lifetimes. In other words, a dumping ground...

Monday, 23 November 2009

Logmein.com - remote management of computers

https://secure.logmein.com/US/home.aspx

Wednesday, 4 November 2009

Bsdiff Bspatch

bsdiff and bspatch are tools for building and applying patches to binary files. By using suffix sorting (specifically, Larsson and Sadakane's qsufsort) and taking advantage of how executable files change, bsdiff routinely produces binary patches 50-80% smaller
http://www.daemonology.net/bsdiff/

Friday, 9 October 2009

Creating a new module in CVS


Creating a new module in CVS.
Fisrtly "cvs -n" is your friend!
It allows you to run changes without actually changing anything.

cvs -n -d :pserver:@ptserver:/Realtime import -m "Initial check in" rap tohare initial

cvs -d :pserver:@ptserver:/Realtime import -m "Initial check in" rap tohare initial

cvs -d :pserver:@ptserver:/Realtime checkout rap

Wednesday, 16 September 2009

Bobby Tables


Python
Using the Python DB API, don't do this:
cmd = 'update people set name='%s' where id='%s'%(name, id)
curs.execute(cmd)

instead, do this:
curs.execute('update people set name=:1 where id=:2', [name, id])

http://bobby-tables.com/

Wednesday, 9 September 2009

Open energy monitor

From http://lwn.net/Articles/349007/


The OpenEnergyMonitor project

The OpenEnergyMonitor project is based on the work of two developers, Trystan Lea and Suneil, both from Wales. "This is a project to develop and build open source energy monitoring and analysis tools for energy efficiency and distributed renewable microgeneration." The project appears to have been launched in the summer of 2009.

The OpenEnergyMonitor project's graphic [PDF] describes the goals, which include:

  • Monitoring AC mains for energy analysis purposes.
  • Energy prediction for renewable energy feasibility studies (Planned).
  • Monitoring energy captured from wind, solar water and photovoltaic sources.
  • Storage, analysis and display of energy usage data.
  • Development of energy technologies.
  • The export of energy usage information to the Internet (Planned).

The OpenEnergyMonitor site lists several example projects:

OpenEnergyMonitor features a simple structure that is built from a variety of open-source hardware and software components. The data flow through the system starts with an Arduino processor and a custom built I/O shield for interfacing the analog signal to the Arduino. The Arduino sends data to the host computer via a USB serial connection.

The project provides several ways to collect and display the power data. The simpler batch mode works as follows: The ArduinoComm Java program can be used to copy a batch of recorded data to a file using a command such as:

    $ java ArduinoComm >tmp.dat
Graphing of the captured data can be done with the KDE utility kst, see the Using KST for graphing document for details.

A more interactive real time display can be achived using the PowerLogger and PowerSampler Java programs. A test installation of both programs was performed on an Ubuntu 9.04 system. The OpenEnergyMonitor java software guide was followed. Each program requires installation of the associated Arduino program (sketch) on the Arduino board. Your author had several Arduino Deicimila boards around from other projects and an already installed version 17 of the Arduino IDE. The Arduino Power Logger program (sketch) was retrieved, compiled and installed on the Deicimila board without any problems.

Next, Java was installed on the machine along with the RXTX serial/parallel communication library. The Java code was compiled and run with the java ContinuousPower command. The ContinuousPower GUI showed up and after clicking on the Start button, the Arduino status indicated that a connection was established and an a flow of data was seen from the Arduino board. The real time graph's X axis changed with advancing time and the data changed slightly due to noise. Unfortunately, your author did not have the parts on hand to construct an input shield board, so monitoring of some real data was not possible. The PowerSampler program was compiled and installed with similar results.

For more information on the inner workings of the Java software, see the Power Logger Source Code Guide and the Program Structure and Data Flow Diagram. The latter explains both the Power Logger and Power Sampler Java programs since both share a large percentage of source code.

OpenEnergyMonitor is an interesting project in the early stages of development. It comes along at a time when the renewable energy field is seeing a lot of growth, and efficiency monitoring of non-renewable sources is becoming more important for both financial and ecological reasons. Hopefully, future releases of OpenEnergyMonitor will include a wider variety of supported sensor devices. A multi-channel temperature monitor would be useful for characterizing a variety of solar energy sources such as photovoltaic, hydronic (hot water) and solar-heated air panels.

The OpenEnergyMonitor project could also be useful for providing a base of working code for a more generic Arduino-based data logger, and the real-time data visualization capabilities are an added bonus. A thread on the Arduino forum about an Open Source Data Logger Project Using the Arduino indicates some potential interest, but that project apparently never got off the ground.

Wednesday, 19 August 2009

Qt Designer and subclassing QGraphicsView

From http://doc.trolltech.com/qq/qq20-jambi.html


The display is implemented by subclassing the QGraphicsView class. When using Qt Designer to create our user interface, this custom widget is unavailable to us. But it is still possible to include the widget in the user interface definition by "promoting" one of Qt's regular widgets as a placeholder for it on the form we create in Qt Designer.

So, when designing the user interface, we put a QGraphicsView widget onto the form, Then we open a context menu over it and click Promote to Custom Widget. In the dialog that opens, we specify the name of our subclass: QtanoidView in this case.

Message Queue links


http://www.unlimitednovelty.com/2009/04/twitter-blaming-ruby-for-their-mistakes.html

Tuesday, 18 August 2009

Electronic music and Sound Cloud

http://www.synthtopia.com/
http://soundcloud.com/tracks/search?q=futureclassic
http://soundcloud.com/api/applications
http://radioclouds.com/#/?user=futureclassic

Roulette Ruby


Assumptions:
- we get double our bet back when we win
- we reset the bet to 1 when we win
- we leave the bet at the maximum bet of $50 when we hit it
- we double our bet each time we lose (this is the theoretical lynch pin in that you can win back your previous losses eg. you lose with bets of 1,2,4,8. Then you win with a bet of 16. So total profit is 16 - 8 - 4 -2 -1 = 1. So you never really lose. Until you hit the table betting limit.)
- we keep betting until we run out of money or we make 1.05 * initial bank

This is the highest win ratio but the wins are so small that one loss wipes them out.

tohare@pts-tohare-laptop:~/projects/ruby$ ruby roulette.rb  
count: 368, bank 2101, bank - INITIAL_BANK 101, bet 1
count: 190, bank 2101, bank - INITIAL_BANK 101, bet 1
count: 233, bank 2101, bank - INITIAL_BANK 101, bet 1
count: 1361, bank 2101, bank - INITIAL_BANK 101, bet 1
count: 192, bank 2101, bank - INITIAL_BANK 101, bet 1
count: 425, bank 2101, bank - INITIAL_BANK 101, bet 1
count: 702, bank 2101, bank - INITIAL_BANK 101, bet 1
count: 219, bank 2101, bank - INITIAL_BANK 101, bet 1
count: 15496, bank 44, bank - INITIAL_BANK -1956, bet 50
count: 1078, bank 2101, bank - INITIAL_BANK 101, bet 1
Times Won: 9
Times Lost: 1
Average win amount: -105
tot amount: -1047


class RouletteTable
  BLACk=[2,4,6,8,10,11,13,15,17,20,22,24,26,28,29,31,33,35]
  RED=[1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36]

  def self.spin
    srand()
    result = rand(37)
    #puts "Result: #{result}"
    return :green if result == 0
    return :black if BLACk.include?(result)
    return :red if RED.include?(result)
  end

end

INITIAL_BANK=2000
BETTING_LIMIT=50
winnings=[]

10.times do
  bank = INITIAL_BANK
  bet = 1
  count =0

  while 1
    break if ((bank - bet) < 0)
    break if (bank > (1.05 * INITIAL_BANK))
    bank -= bet
    count += 1
    if RouletteTable.spin == :black
      bank += bet*2
      bet = 1
      next
    end
    bet = (bet*2).to_i
    if bet > BETTING_LIMIT
      bet = BETTING_LIMIT
    end
  end
  winnings << bank - INITIAL_BANK
  win = bank - INITIAL_BANK
  #puts "count: #{count}, bank #{bank}, bank - INITIAL_BANK #{win}, bet #{bet}, winnings #{winnings}"
  puts "count: #{count}, bank #{bank}, bank - INITIAL_BANK #{win}, bet #{bet}"
end

profit = winnings.select{|i| i > 0}.length
loss = winnings.select{|i| i < 0}.length
tot = winnings.inject{|acc,i| acc + i}
avg = winnings.inject{|acc,i| acc + i} / winnings.length
puts "Times Won: #{profit}"
puts "Times Lost: #{loss}"
puts "Average win amount: #{avg}"
puts "tot amount: #{tot}"

Ruby Roulette


http://everythingbehind.com/post/164836782/could-spam-email-help-me-win-big-at-the-casino

Monday, 17 August 2009

Real time physics simulators

From http://users.softlab.ntua.gr/~ttsiod/games.html


I want to "lure" my nephews and nieces towards science and engineering, and one of the things I've done towards that goal is to code some real-time physics simulators.

2D waves
Waves... (they look much better when they move :-)
All the code I wrote is available below, and compiles under Linux, Free/Net/OpenBSD, Mac OS/x and Windows (with GCC/MinGW), with the usual...

Monday, 10 August 2009

Git


git

git reset --hard HEAD
git checkout master
for i in $(git rev-list --reverse origin..master) ; do git cvsexportcommit -W -c -p $i; done

$ git cvsimport -i
$ git rebase origin

$ CVSROOT=$URL cvs co module
$ cd module
$ git cvsimport
hack, hack, hack, making two commits, cleaning them up using rebase -i.
$ git cvsexportcommit -W -c -p -u HEAD^
$ git cvsexportcommit -W -c -p -u HEAD

http://blogs.frugalware.org/vmiklos?blog=7&page=1&disp=posts&paged=2

static checking tools



Friday, 7 August 2009

HTML 5 resources

HTML5 Canvas Experiment


by Sebastian Deutsch on August 3rd, 2009

html5 canvas experiment

Click here to launch the experiment! (beware: sophisticated browser needed)

HTML5 is getting a lot of love lately. With the arrival of FireFox 3.5, Safari 4 and the new betas of Google Chrome and Opera, browsers support some great new features including canvas and the new audio/video tags. Most interesting: modern mobile devices like the iPhone or Android-based phones also support new standards in favor of Flash. The future looks bright for HTML5.

Time for us to play with this technology. We've created a litttle experiment which loads 100 tweets related to HTML5 and displays them using a javascript-based particle engine. Each particle represents a tweet – click on one of them and it'll appear on the screen.

The original particle engine was ported from a Flex/AS3 project that we've created to javascript. We're using processing.js for particle rendering on canvas which is a very useful graphics library created by John Resig. The music will only be played if the browser supports the audio tag. To detect if the audio or canvas feature is present we use the awesome modernizr library. We could have used a fallback solution like playing the sound via Flash. But this experiment is about HTML5 – and who needs Flash anyway?

Big thanks to spokenlounge.com for supporting us and for providing the mp3 track.

If you want to dive into further ressources, then try:

- HTML5Doctor, great ressource about everything HTML5
- Official Mozilla Canvas Tutorial
- Carsonified linklist about HTML5

Thursday, 6 August 2009

Open Source Windows Applictions

FileZilla, the free FTP solution
VirtualBox is a powerful x86 virtualization product for enterprise as well as home use.
Paint.NET is free image and photo editing software for computers that run Windows
T r u e C r y p t

Free open-source disk encryption software for Windows Vista/XP, Mac OS X, and Linux


PDFCreator easily creates PDFs from any Windows program.

Monday, 27 July 2009

CPAN install Bundle::CPAN fails on RHEL 5

There are default build parameters that fail.

cc1: error: unrecognized command line option "-fstack-protector"
cc1: error: invalid parameter `ssp-buffer-size'
SHA.c:1: error: bad value (generic) for -mtune= switch

Find where these parameters are set:

[root@ /usr/lib/perl5]# find . -name "*" -exec grep -H ssp-buffer-size {} \;
./5.8.8/i386-linux-thread-multi/Config_heavy.pl:config_arg2='-Doptimize=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables'
./5.8.8/i386-linux-thread-multi/Config_heavy.pl:config_args='-des -Doptimize=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -Dversion=5.8.8 -Dmyhostname=localhost -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red Hat, Inc. -Dinstallprefix=/usr -Dprefix=/usr -Darchname=i386-linux -Dvendorprefix=/usr -Dsiteprefix=/usr -Duseshrplib -Dusethreads -Duseithreads -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio -Dinstallusrbinperl=n -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less -isr -Dd_gethostent_r_proto -Ud_endhostent_r_proto -Ud_sethostent_r_proto -Ud_endprotoent_r_proto -Ud_setprotoent_r_proto -Ud_endservent_r_proto -Ud_setservent_r_proto -Dinc_version_list=5.8.7 5.8.6 5.8.5 -Dscriptdir=/usr/bin'
./5.8.8/i386-linux-thread-multi/Config_heavy.pl:lddlflags='-shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -L/usr/local/lib'
./5.8.8/i386-linux-thread-multi/Config_heavy.pl:optimize='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables'

And delete them from these files.

Thursday, 23 July 2009

Why Software Sucks

We work at the sausage factory, so we know how this stuff is made. And it is not pretty. Most software is created by bad programmers like us (or worse!), which means that by definition, most software sucks. Let's refer to Scott Berkun's Why Software Sucks to nail down the definition:

When people say "this sucks" they mean one or more of the following:

  • This doesn't do what I need
  • I can't figure out how to do what I need
  • This is unnecessarily frustrating and complex
  • This breaks all the time
  • It's so ugly I want to vomit just so I have something prettier to look at
  • It doesn't map to my understanding of the universe
  • I'm thinking about the tool, instead of my work
From http://www.codinghorror.com/blog/archives/001289.html

Tuesday, 14 July 2009

Programming book for kids and beginners

Hello World! Computer Programming for Kids and Other Beginners
author Warren and Carter Sande
pages 430
publisher Manning
rating 9/10
reviewer JR Peck
ISBN 978-1933988498
summary Computer programming for kids and other beginners.

http://books.slashdot.org/story/09/07/13/1349203/Hello-World?art_pos=11

Easy serialization in C using structs

Normally I use C++ and this would require using Boost::serialization but I think I'll switch my data structure class back to a C structure and use basic C serialization.
Easier?Here is a test program.
The array size of 20000 creates a 625kB file.
(Build on linux with  gcc -Wall -Wextra -o serial serial.c)

#include <stdio.h>
#include <string.h>

typedef struct node_struct {
    char label[20];
    float x;
    float y;
    struct node_struct * other;
} node_t;

#define ARRSIZE 20000
int main()
{

    node_t nodearr[ARRSIZE];
    node_t readnodearr[ARRSIZE];
    int i;
    for (i=0; i < ARRSIZE; ++i) {
        strcpy(nodearr[i].label, "test label");
        nodearr[i].x = i + 2.3;
        nodearr[i].y = i + 4.3 + nodearr[i].x;
        if (i > 0)
            nodearr[i].other = &nodearr[i-1];
        else
            nodearr[i].other = NULL;
        printf("%d %f %f", i, nodearr[i].x, nodearr[i].y);
    }
    FILE* fp = fopen("nodes", "w");
    fwrite(nodearr, sizeof(node_t), ARRSIZE, fp);
    fclose(fp);
    fp = fopen("nodes", "r");
    fread(readnodearr, sizeof(node_t), ARRSIZE, fp);
    fclose(fp);
    int rtn = memcmp(nodearr, readnodearr, ARRSIZE*sizeof(node_t));
    printf("\n------------\n");
    printf("%d %f %f;", 0, nodearr[0].x, nodearr[0].y);
    for (i=1; i < ARRSIZE; ++i) {
        printf("%f %f, %d, %s %f %f;", nodearr[i].other->x, nodearr[i].other->y, i, nodearr[i].label, nodearr[i].x, nodearr[i].y);
    }
    printf("\nrtn %d\n", rtn);
    return 0;
}

Monday, 13 July 2009

Gprof graphviz/dot plotting


Gprof2Dot  
Convert profiling output to a dot graph.
About

This is a Python script to convert the output from prof, gprof, oprofile, Shark, AQtime, and python profilers into a dot graph.

Thursday, 2 July 2009

Auto indent in Vim

After pasting a lot of code or just trying to indent it correctly go to the first line that is correctly indented and type in the number of lines you want to indent, "=" and then hit down i.e. "j".
Wahla.

Wednesday, 3 June 2009

HDD data recovery

TestDisk is OpenSource software and is licensed under the terms of the GNU Public License (GPL).

TestDisk is a powerful free data recovery software! It was primarily designed to help recover lost partitions and/or make non-booting disks bootable again when these symptoms are caused by faulty software, certain types of viruses or human error (such as accidentally deleting a Partition Table). Partition table recovery using TestDisk is really easy.

TestDisk can

  • Fix partition table, recover deleted partition
  • Recover FAT32 boot sector from its backup
  • Rebuild FAT12/FAT16/FAT32 boot sector
  • Fix FAT tables
  • Rebuild NTFS boot sector
  • Recover NTFS boot sector from its backup
  • Fix MFT using MFT mirror
  • Locate ext2/ext3 Backup SuperBlock
  • Undelete files from FAT, NTFS and ext2 filesystem
  • Copy files from deleted FAT, NTFS and ext2/ext3 partitions.

TestDisk has features for both novices and experts. For those who know little or nothing about data recovery techniques, TestDisk can be used to collect detailed information about a non-booting drive which can then be sent to a tech for further analysis. Those more familiar with such procedures should find TestDisk a handy tool in performing onsite recovery.
GetDataBack is more than an undelete or file recovery program or a system restore:

Monday, 11 May 2009

HBase: Bigtable-like structured storage for Hadoop HDFS

http://wiki.apache.org/hadoop/Hbase

Just as Google's [WWW] Bigtable leverages the distributed data storage provided by the [WWW] Google File System, HBase provides Bigtable-like capabilities on top of Hadoop Core. Data is organized into tables, rows and columns. An Iterator-like interface is available for scanning through a row range (and of course there is the ability to retrieve a column value for a specific key). Any particular column may have multiple versions for the same row key.


Thursday, 30 April 2009

libxml2 indenting or formatting output

I spent ages trying to get libxml2 and xmllint to format the output of an XML file.
The xml file was:
<?xml version="1.0"?>
<root>content<child1>child1 content<child2>child2 content</child2><child3>child3 content</child3><child4>child4 content<child5>child5 content</child5></child4><child6>child6 content</child6></child1></root>

Here you notice that the nodes that have child nodes also have content - I didn't know this was possible in xml. I guess that's why Daniel Villiard harps on how whitespace is significant.
Anyway I removed the content from the nodes that had children and low and behold:

<?xml version="1.0"?>
<root>
  <child1>
    <child2>child2 content</child2>
    <child3>child3 content</child3>
    <child4>
      <child5>child5 content</child5>
    </child4>
    <child6>child6 content</child6>
  </child1>
</root>

Works like a dream...

Friday, 24 April 2009

OpenMP programming

OpenMP

g++ -Wall -o opm opm.cc -fopenmp

#include <stdio.h>
#include <omp.h>

int main ()  {

int nthreads, tid;



/* Fork a team of threads with each thread having a private tid variable */
#pragma omp parallel private(tid)
  {

  /* Obtain and print thread id */
  tid = omp_get_thread_num();
  printf("Hello World from thread = %d\n", tid);

  /* Only master thread does this */
  if (tid == 0)
    {
    nthreads = omp_get_num_threads();
    printf("Number of threads = %d\n", nthreads);
    }

  }  /* All threads join master thread and terminate */

}

Programming contest questions


Wednesday, 15 April 2009

Tailor CVS to Git migration

Tailor VersionOne

Tailor is a tool to migrate changesets between Aegis, ArX, Bazaar?, Bazaar-NG, CVS, Codeville?, Darcs, Git, Mercurial, Monotone, Perforce, Subversion? and Tla? repositories. There are OtherTools with a similar goal, most of them tied and sometime more specialized on a particular system.

See SourceRepository and TargetRepository for more details on supported version-control systems, and ConfigurationFile for how to describe to tailor what you want it to do.

It perform its job executing several MigrationSteps, using a ReplayMechanism? that basically fetches the changesets from any of the source backends and effectively replay each one on the target system. The process can be configured very deeply in several ways, from tweaking a relatively simple configuration file to writing pre- and post- PythonHooks?.

It was written by Lele and it is implemented in Python.

Be sure to RTFM :-)

Twitter fall

http://twitterfall.com/
Cool push technology.

Local Amazon's EC2 api

EUCALYPTUS - Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems - is an open-source software infrastructure for implementing "cloud computing" on clusters. The current interface to EUCALYPTUS is compatible with Amazon's EC2 interface, but the infrastructure is designed to support multiple client-side interfaces. EUCALYPTUS is implemented using commonly available Linux tools and basic Web-service technologies making it easy to install and maintain.

Tuesday, 14 April 2009

dual screen script

tohare@pts-tohare-laptop:~$ cat /usr/local/bin/dualscreen.sh
#!/bin/bash

#xrandr --addmode VGA 1280x768
#xrandr --addmode VGA 1440x900
#xrandr --output VGA --mode 1440x900
#xrandr --output VGA --right-of LVDS
xrandr --output LVDS --auto --output VGA --auto --right-of LVDS --output TMDS-1 --off

Monday, 30 March 2009

Handbrake

HandBrake

HandBrake is an open-source, GPL-licensed, multiplatform, multithreaded video transcoder, available for MacOS X, Linux and Windows

Monday, 16 March 2009

Qwt - Qt Widgets for Technical Applications

5.1.1

The Qwt library contains GUI Components and utility classes which are primarily useful for programs with a technical background. Beside a 2D plot widget it provides scales, sliders, dials, compasses, thermometers, wheels and knobs to control or display values, arrays, or ranges of type double.

plot.png

Friday, 13 March 2009

USB temperature logger

EL-USB-LITE - USB DATA LOGGER TEMPERATURE -LITE


Product Code: EL-USB-LITE
instrument and sensor.com is Australian owned and operated
Availability: Available now, will ship within 48 business hours.
instrument and sensor.com is Australian owned and operated
Price: AU $99.00 + GST


instrument and sensor.com is Australian owned and operated

Quantity:

instrument and sensor.com is Australian owned and operated

EL-USB-LITE - Product Information (Tell a Friend)

https://www.instrumentchoice.com.au/store/index.php?_a=viewProd&productId=203

EL-USB-LITE - USB Temperature Logger

-10 to +50°C (+14 to +122°F) Measurement Range
1 Month Battery Life
2 Settable Alarm Thresholds
Red/Green Alarm Status Indication via Button
  
The EL-USB-LITE is a low cost USB temperature data logger with a measurement range of -10 to +50°C (+14 to +122°F) and a fixed sample rate of 30 minutes. The data logger can store over 4,000 readings and is supplied with a coin-cell battery, which provides approximately 1 months usage. By pressing the button a red/green LED indicates whether a preset alarm level has been breached.
 
The data logger is configured, and data downloaded, by plugging the EL-USB-LITE into a PC's USB port and running the supplied control software under Windows 98. 2000 or XP. The downloaded data can be graphed, printed and exported to other applications.

Download Data Sheet

Monday, 9 March 2009

Comprehensive C Archive Network

List of all CCAN modules:

Note that two downloads are offered: the first includes with all the other ccan modules this module uses, the second is a standalone download.

Or you can just download the tarball of everything including CCAN tools (142K).

Name Summary / Link to details Download
alignof ALIGNOF() macro to determine alignment of a type. 3K / 2K
alloc memory allocator routines 11K / 10K
antithread Accelerated Native Technology Implementation of "threads" 82K / 45K
array_size routine for safely deriving the size of a visible array. 3K / 3K
build_assert routines for build-time assertions 2K / 2K
check_type routines for compile time type checking 4K / 3K
container_of routine for upcasting 5K / 3K
crc routines for crc of bytes 11K / 11K
crcsync routines to use crc for an rsync-like protocol. 15K / 6K
endian endian conversion macros for simple types 3K / 3K
grab_file file helper routines 30K / 3K
hash routines for hashing bytes 13K / 13K
list double linked list routines 7K / 4K
md4 MD4 Message Digest Algorithm (RFC1320). 8K / 4K
noerr routines for cleaning up without blatting errno 3K / 3K
read_write_all read_all and write_all routines. 3K / 3K
str string helper routines 3K / 3K
str_talloc string helper routines which use talloc 29K / 3K
talloc tree allocator routines 27K / 24K
tap Test Anything Protocol 11K / 11K
typesafe_cb macros for safe callbacks. 4K / 4K

Thursday, 19 February 2009

Sphinx full text search

Sphinx is a full-text search engine, distributed under GPL version 2. Commercial license is also available for embedded use.

Generally, it's a standalone search engine, meant to provide fast, size-efficient and relevant fulltext search functions to other applications. Sphinx was specially designed to integrate well with SQL databases and scripting languages. Currently built-in data sources support fetching data either via direct connection to MySQL or PostgreSQL, or using XML pipe mechanism (a pipe to indexer in special XML-based format which Sphinx recognizes).

As for the name, Sphinx is an acronym which is officially decoded as SQL Phrase Index. Yes, I know about CMU's Sphinx project.

Tuesday, 17 February 2009

Metapixel

Metapixel - A Photomosaic Generator

What is it?

Metapixel is a program for generating photomosaics. It can generate classical photomosaics, in which the source image is viewed as a matrix of equally sized rectangles for each of which a matching image is substitued, as well as collage-style photomosaics, in which rectangular parts of the source image at arbitrary positions (i.e. not aligned to a matrix) are substituted by matching images.

Simpycity in Pylons

Using Simpycity in Pylons
Posted Tuesday Feb 10th, 2009 05:02pm
by Aurynn Shaw
| Permalink

Project Design

Simpycity's core philosophy is that the DBA is going to perform the vast majority of the schema design without the aid of a conventional ORM.

This is a marked divergence from most other ORMs and database abstraction layers, and it has an impact on how your project should be designed.

The best results with Simpycity will be seen with a strong up-front requirements analysis, thorough schema design, and a consistent, fixed database API.

Python call graph

http://pycallgraph.slowchop.com/

Wednesday, 11 February 2009

Wednesday, 14 January 2009

Fivedash accounting

http://www.fivedash.com/

FIVEDASH™

Australian bred accounting software for small business

Why use FIVEDASH™?

  • · Unlimited users
  • · Cost-effective customization
  • · Secure, reliable back-end
  • · Feature competitive
  • · No license fees (GPL 3)

We believe

  • · the basic tools of business should be free
  • · software should be customizable, and easy to customize
  • · software should grow with your business, from sole operator, to multinational
  • · everyone has a right to data security
  • · business data should be transportable, and accessible from anywhere

tim's shared items

Blog Archive

Add to Google Reader or Homepage