Hopefully I get to try out for Masala next week. They're a local afro-cuban/brazilian drumming group here in Victoria. I've seen them perform twice, and they totally rocked out. Cross your fingers for me!
Monday, June 30, 2008
masala
Hopefully I get to try out for Masala next week. They're a local afro-cuban/brazilian drumming group here in Victoria. I've seen them perform twice, and they totally rocked out. Cross your fingers for me!
rails
A couple interesting looking Rails plugins:
named fixtures exporter - This plugins can export/display fixtures with belongs_to/has_and_belongs_to_many relations using fixtures names instead of foreign key id.
Google Ajax Libraries API - Implements the Google AJAX Libraries API as a Rails plugin.
Sunday, June 29, 2008
baroque
On July 1st, Canada Day 2008, I'm going to first be listening to whales at the lab, and then going to the Canada Day Baroque Concert on Mount Tolmie, here in Victoria BC.
From the website:
"Two, free, hour-long, open air baroque music concerts celebrating Canada Day on Mt. Tolmie, 2 p.m. and repeated at 3:30 p.m. Program: Bach Double Violin Concerto in D minor; Corelli Concerto Op.6, #8; Grosso, Geminiani Concerto Grosso "La Folia"; Handel "Water Music" excerpts. 100 chairs available or sit on the rocks. This concert is presented by the Island String Players Society (the Victoria Chamber Orchestra)"
Nice.
ghosh
I'm listening to Masala Mix on CFUV, the campus radio station at UVIC.
Sudakar just played a really nice piece by Bikram Ghosh, he's a tabla player. Highly recommended.
Friday, June 27, 2008
Thursday, June 26, 2008
flac
To get FLAC to compile on Mac OSX:
./configure --enable-static --disable-asm-optimizations --disable-shared
Otherwise you get a very odd error:
gcc -dynamiclib ${wl}-flat_namespace ${wl}-undefined ${wl}suppress -o .libs/libFLAC.8.2.0.dylib .libs/bitmath.o .libs/bitreader.o .libs/bitwriter.o .libs/cpu.o .libs/crc.o .libs/fixed.o .libs/float.o .libs/format.o .libs/lpc.o .libs/md5.o .libs/memory.o .libs/metadata_iterators.o .libs/metadata_object.o .libs/stream_decoder.o .libs/stream_encoder.o .libs/stream_encoder_framing.o .libs/window.o .libs/libFLAC.lax/libFLAC-asm.a/bitreader_asm.o .libs/libFLAC.lax/libFLAC-asm.a/cpu_asm.o .libs/libFLAC.lax/libFLAC-asm.a/fixed_asm.o .libs/libFLAC.lax/libFLAC-asm.a/lpc_asm.o .libs/libFLAC.lax/libFLAC-asm.a/stream_encoder_asm.o -lm -install_name /usr/sness/lib/libFLAC.8.dylib -Wl,-compatibility_version -Wl,11 -Wl,-current_version -Wl,11.0
ld: .libs/libFLAC.lax/libFLAC-asm.a/bitreader_asm.o has external relocation entries in non-writable section (__TEXT,__text) for symbols:
FLAC__crc16_table
bitreader_read_from_client_
/usr/bin/libtool: internal link edit command failed
make[4]: *** [libFLAC.la] Error 1
make[3]: *** [all-recursive] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
rescue
rescuing exceptions in Ruby.
What I needed was to find out what exception was being thrown, I did this with:
begin
raise 'A test exception.'
rescue Exception => e
puts e.message
puts e.backtrace.inspect
end
Wednesday, June 25, 2008
make
Communicate via XML with mchelper
Make Controller - Flash overview
Make Controller Kit - Buy it. sness guarantees you will like it.
Programming the Make Controller
Arduino or Make Controller? sness votes "both"
Make Controller Kit - Flash Interface - Actionscript 3.0. Of course AS3, it is the way to go.
Make Controller - Overview and Concepts
Communicate with the Make Controller Kit via OSC.
C++ library for talking OSC
Configure autosend on the Make Controller
/system/autosend-udp 1
/system/autosend-interval 10
/dipswitch/autosend 1
/analogin/*/autosend 1
The list of subsystems that currently support autosend are:
analogin
dipswitch
xbee
Make Controller - OSC - Overview and Concepts
Tuesday, June 24, 2008
fw
Tascam FW-1804 - This is what we are using to digitize the orca recordings. I'm trying to figure out how to simultaneous record S/PDIF for our DAT drive along with 8 channels of audio from our two banks of audio cassette recorders.
I'm using orcarecord from Marsyas.
Monday, June 23, 2008
neash/xinf
I'm working on porting SWHX to Linux, it looks like it's almost there, I got the first demo program to run.
Some other longer term possibilities for doing something like Adobe AIR, but open source are:
neash - The "neash" library provides a compatibility layer to allow haXe programs to target both neko and flash9, giving both web browser and stand-alone support. The API follows the flash9 API very closely to allow easy porting from existing code. The neko implementation currently makes use of the NME library, which in turn uses SDL.
announcing neash - A blog post.
xinf - Xinf (Xinf Is Not Flash) strives to provide a unified SVG-oriented API for graphics programming in haXe. Using Xinf, your application can run on Adobe's Flash Player (Version 9 up), our own 'Xinfinity' runtime, and (with limitations) on standards-compliant web browsers like Mozilla Firefox - from the same source code.
flash debugging trick
A little trick I learned when debugging some Flash in haXe:
I had an event callback that looked like:
function mouseDownListener (e:MouseEvent):Void {
trace("e=" + e.target.name);
}
Which would give me the name for the object that I clicked on. It would just give me a name like "instance15" which wasn't very helpful.
It's easy to make it more readable, just set the name of the Sprite when you create it:
drag_icon = new Sprite();
drag_icon.name = "drag icon"; // sness - For debugging, very handy.
well.addChild(drag_icon);
orl
Organic Responsive Landmark - 15,371 individual fibers 65 km of fiber optics. The Cloud is located in downtown Florence just outside the Fortezza da Basso.
Sweet, I really enjoyed Florence, and this could have only have enhanced my visit.
Sunday, June 22, 2008
evolve
Women are screwing up human evolution by going out with the "Bad Boy".
I heard a really insightful analysis about why great women go out with bad guys on CBC yesterday, by a woman psychologist and writer. She said that it's because girls see all these roles layed out before them when they're growing to be a woman, these stereotyped societal roles, and just say "No!". They also see the good guy as boring, and the bad boy as exciting. I found this analysis very illuminating.
Saturday, June 21, 2008
lua
lua - Quite an interesting new programming language.
Learn
more
programming
languages.
(This week was Ruby, Javascript, Flash, haXe, XHTML/CSS and C++ for me.)
Yes, XHTML/CSS is a programming language, and if more programmers thought of it as an actual programming language, we would have a better web.
Friday, June 20, 2008
marsyasx
I just learned about MarsyasX today from Gustavo. MarsyasX is a new version of Marsyas 0.2 that supports video as well as audio. Sounds neat.
responds to mp3
To allow a client to download an MP3 file from Rails:
First, download the mime-types gem:
gem install mime-types
Then, register mp3 as a Mime type in environment.rb:
Mime::Type.register 'audio/mpeg', :mp3
Then in your "respond_to" block, add a handler for mp3 files. Redirect the user to the location of the file you want to download.
def show_recording_audio_file
@recording = Recording.find(params[:id])
@audio_file = @recording.audio_file
respond_to do |format|
format.html # index.html.erb
format.mp3 {
redirect_to @audio_file.public_filename
}
format.xml { render :xml => @audio_file }
end
end
You could also send the file directly:
send_file RAILS_ROOT + "/public" @audio_file.public_filename + ".mp3"
rep
Bokardo has an article about 5 ways to improve reputation systems which is from Boxes and Arrows, On A Scale of 1 to 5
Take aways:
1. List the behaviors you want to encourage and those that you want to discourage
2. Be transparent
3. Keep your reputation system flexible
4. Avoid negative reputations
5. Reflect reality
Framework:
1. Who is doing the rating?
2. What, exactly, is being rated?
3. If people are being rated, what behaviors are we trying to encourage or discourage?
Thursday, June 19, 2008
rnt
A really good blog rant by Steve Yegge called Rhinos and Tigers. One of his points that I really believe in is "Learn New Languages". The last few years I've been learning with and using lots of new languages, and it really has made me a better programmer.
galvanic
The galvactivator is a glove that senses changes in skin conductivity response, which is related to your arousal level.
So cool!
I read about this when reading a paper in the Computer Music Journal by Mark Feldmeier and Joseph Paradiso called "An Interactive Music Environment for Large Groups with Giveaway Wireless Motion Sensors".
SWHX on Linux
I've made a little progress in getting swhx running on Linux.
SWHX is a really cool alternative to Adobe AIR, and lets you make a Flash application that runs on your local machine. It works by running a Neko process that launches and controls a Flash player on your local system.
It runs on Mac OSX and Windows, but not yet on Linux.
It was a little tricky to find out how to just compile it, so here's what I learned.
First of all, install it like normal:
haxelib setup
haxelib install swhx
Then get the source code from svn on Google Code:
svn checkout http://screenweaver-hx.googlecode.com/svn/trunk/ swhx
Change directory into the sample projects directory and copy the 1-basic to 0-verybasic
cd samples
cp -av 1-basic 0-verybasic
cd 0-verybasic
Replace the App.hx file in there with something more recent:
// App.hx
class App {
static function main() {
// initialize ScreenWeaver HX
swhx.Application.init();
// create a 400x300 window with title "My Application"
var window = new swhx.Window("My Application",400,300);
// creates a remoting server
var server = new neko.net.RemotingServer();
// create a flash object inside this window
var flash = new swhx.Flash(window,server);
// set the HTML attributes of this flash object
flash.setAttribute("src","ui.swf");
// activate the Flash object
flash.start();
// display the window
window.visible = true;
// enter the system event loop (will exit when window is closed)
swhx.Application.loop();
// cleanup SWHX properly
swhx.Application.cleanup();
}
}
Compile and run:
haxe compile.hxml
neko app.n
You should then get a box with a red square in it.
libpcre.so.3
If you try to install the haXe libraries on Fedora with:
haxelib setup
you might get an error about libpcre.so.3 not being found. To correct this, just symlink your /lib/libpcre.so.0 to libpcre.so.3, like this:
ln -s /lib/libpcre.so.0.0.1 /lib/libpcre.so.3
And reload your libraries with:
ldconfig -v
You don't have to download that Debian version of libpcre, they just unilaterally chose to rename libpcre as version 3 for some reason, and because so many people use Ubuntu, it's starting to creep into common usage.
Wednesday, June 18, 2008
wtop
wtop is like top, but for your web server:
wtop
req/s avg min max 3xx 4xx 5xx slow
----------------------------------------------------------------------------------------
home 0.20 126 26 .........* 543 -- -- -- --
landing 12.60 62 0 @*........ 1319 1.20 -- -- 0.07
search 0.93 597 92 **........ 1764 -- -- -- --
signup 0.20 285 22 @*.......* 1415 -- -- -- --
css 1.63 9 0 #......... 294 0.40 -- -- --
image 3.40 2 0 #......... 192 0.40 0.07 -- --
js 1.63 46 0 @*........ 471 0.67 -- -- 0.03
Sweet.
sketch
Sketching in Code by A List Apart.
I'm a big believer in massively iterating. Start small, show people what you got, and improve. Rince and repeat.
Make sure you use a source control management tool like git, and tag the code each time you get something working, so that if you don't like the direction you went in the last couple hours (or days), you can just zip back to a previous version that worked.
I also like to do this with one host that I look at things on, and then push out the latest version to another server, so that your users can always see the latest good version, and not see your current working copy.
silver selkie
Check out my friend Katrina's website Silver Selkie Studio. She's really cool, a funky lesbian who lives up in Powell River and designs jewellery, art and fibre.
Tuesday, June 17, 2008
latex
For a conference I'm thinking of going to, they want a submission in ACM proceedings style, and I'm doing it in Latex.
Some good links:
Latex Tutorial
Latex backing files - For ACM style
sig-alternate howto
latex style
ACM Proceedings templates
latex
For a conference I'm thinking of going to, they want a submission in ACM proceedings style, and I'm doing it in Latex.
Some good links:
Latex Tutorial
Latex backing files - For ACM style
sig-alternate howto
latex style
ACM Proceedings templates
victoria jazz
You can get tickets for concerts at the Victoria Jazz Fest at:
Ticket Outlets - Jazzfest International
VICTORIA JAZZ SOCIETY
Suite J, 727 Johnson St.
(250) 388-4423
Toll Free 1-888-671-2112
LYLE'S PLACE
726 Yates St.
Service charges may apply
All prices include GST
No refunds or exchanges
MCPHERSON BOX OFFICE AND ITS OUTLETS
Royal Theatre & Tourism Victoria Visitor Info Centre
Charge by Phone 386-6121
Toll Free 1-888-717-6121
Online http://www.rmts.bc.ca
Monday, June 16, 2008
firefox
Tomorrow is Firefox day! Please download Firefox and help set a world record.
Here's a Field Guide to Firefox 3.
github
I just signed up for github. I'm going to try hosting a project on there, to see how it goes. Most of my projects are at SourceForge, but I like that github supports git so well. I've got no huge problems with svn, but I do think that git is better tech.
utc migrations
Interesting, in the latest version of Rails, the migrations are now in UTC, not a simple series of incrementing integers.
Less likely to conflict, but less pretty.
Friday, June 13, 2008
Thursday, June 12, 2008
oorp
Object-Oriented Reengineering Patterns collects and distills successful techniques in planning a reengineering project, reverse-engineering, problem detection, migration strategies and software redesign.
Available as a free PDF as well, nice.
kiczales
Yesterday Gregor Kiczales came to give a talk in the Computer Science department here at UVIC. It was the talk he gave at OOPSLA last year, and was just fascinating.
He talked about Lucy Suchman, and how her research goes into sociological analyses of user interfaces, and I really connected with those ideas. I really need to read her book Human-Machine Reconfigurations, the small excerpts that he presented resonated strongly with the way I view the world.
He also talked about Brian Cantwell Smith and his book On the Origin of Objects. Some interesting ideas here as well, I was reminded strongly of semotics, with signs and signifiers, and how meaning is constructed by each of us.
He also talked a bit about Aspect-Oriented Programming, objects and Mylyn.
Too bad that it's all in Java, I've done some large projects with Java, and I just don't find it a very satisifying environment to work inside. I much prefer something like Ruby or Python, and I've been having a lot of fun with ECMAScript languages, like haXe, Flash and Javascript.
Wednesday, June 11, 2008
VST plugins
VST plugins - Virtual Studio Technology
ASIO - Audio Stream Input/Output
Vst 3rd Party Developer Support
VST Plug-In GUI using XML
VSTGUI Introduction
creating users on macosx
Could they make creating users on MacOSX via the command line any more difficult?
How to: Add a user from the OS X command line, works with Leopard!
Create a new user via the Terminal
http://www.geektimes.com/macintosh/os/x/10_3/and/add_user_script.html
The last link has probably the best info.
Tuesday, June 10, 2008
xosd
I was using tzosdclock for displaying the time in the corner of my screen. It uses xosd.
I used it in my .lircrc like this:
begin
button = Back
prog = irexec
repeat = 0
config = /usr/sness/bin/tzosdclock -fn '-*-helvetica-bold-r-normal-*-34-*-*-*-*-*-*-*' -tc black -oc white -ft "%I:%M %p" -ha right -os 10
config = killall -9 tzosdclock
end
This worked great, but I found that I was limited by the fact that I couldn't use large truetype fonts, so I switched to urxvtc running a little Ruby program:
#!/usr/bin/ruby
while(1)
date = Time.now.strftime("%I:%M %p")
printf "#{date}\r"
$stdout.flush
sleep 30
end
And started it on startup with
eesh -e "goto_desktop 3"
eesh -e "goto_area 1 0"
urxvtc -fn "xft:Bitstream Vera Sans Mono-100" -geometry 8x1-0+0 -bl -b 3 +ptab -rv -e sh -c 'clockr.rb'
Which worked even better. Now I just switch to that desktop, which has aumix in text format, and the clock, and looks like this:
Stockhausen
We got talking about Karlheinz Stockhausen today at work. I remember reading some of his works when I was at Pearson College, and listened to a number of his works.
I'm now looking for a series of essays he wrote on electronic music, if anyone has any pointers, leave them in the comments below.
marsyas making waves
Marsyas, the framework that I'm working with to do Music Information Retrieval is being used by Charlotte Curtis in her Google Summer of Code project. Check out her blog posts about it.
Monday, June 09, 2008
rev
Rev - is an event library for Ruby, built on the libev event library which provides a cross-platform interface to high performance system calls . This includes the epoll system call for Linux, the kqueue system call for BSDs and OS X, and the completion ports interface for Solaris.
Not quite cross-platform enough, but very cool nonetheless.
16th tones
The Carrillo Tone Piano is a recording with a prepared piano that can play a scale with notes separated by 1/16th tones.
flash audio
I'm writing some Flash9/haXe code to generate audio on the fly in Flash.
This one blows my mind, a TB-303 implemented in Flash. And it sounds kick-as.
How cool is audio programmming?
Play the tiny drum machine!
how to make actionscript 3 play generated pcm wave data
Dynamic Sound in Actionscript 8.5 - from Robots w/Lasers
SoundWriter
Sunday, June 08, 2008
lol
A very funny Firefox plugin : AmIOnMySpace.com - This plugin will alert you if you accidently stumble onto MySpace.com, and take you back to the site you came from.
Need.
zsh sleep and background
To sleep for 2 hours and then rsync a file to the server, so that it'll upload after I go to bed, in zsh:
(sleep 2h && rsync -avP file.avi n:./) &
Friday, June 06, 2008
hide gmail header
Stylish is a great plugin for Firefox that allows you to change the appearance of websites.
What I needed it for was to autohide the Gmail header, with the new "Google Labs" link, it overflowed onto two lines on my small screen with my large fonts.
Thursday, June 05, 2008
make
A tour of the Make Controller Application board:
Index
Overview
Analog Inputs
Digital Outputs
Servos
Power
Serial Port
User Interface
Also:
Howto Connect a Switch
The Make Controller Kit Development Site
OSC for Ruby - To talk to the Make Controller
uhttpd
GNU libmicrohttpd is a small C library that is supposed to make it easy to run an HTTP server as part of another application.
Wednesday, June 04, 2008
FT232R
FT232R - The Serial to USB converter that is on my Ardunio board.
It's going to be very interesting to compare the Make Controller and the Arduino controller. The Make Controller has built in Ethernet (and USB) and talks via OSC, and the Arduino is simpler and just talks via USB. The Arduino is less than half the cost as well.
I think they both rock.
rock on
I just got my Make Controller Kit to turn on it's LEDs with Linux.
One thing they don't mention very prominently is that mchelper doesn't work with USB mode under Linux. You need to use Ethernet to control it instead.
This seems to be due to no support for USB CDC. Hopefully someone fixes this soon.
radiodrum
I just got some code running on Linux that reads the output of the Radiodrum alternative music controller. It reads data right from the MIDI port, /dev/midi1 and outputs the values to stdout.
#include <sys/soundcard.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#define MIDI_DEVICE "/dev/midi1"
int main(void) {
unsigned char message[4];
int byte1, byte2, byte3;
float s1x, s1y, s1z;
float s2x, s2y, s2z;
int s1whack;
int s2whack;
// first open the sequencer device for reading.
int seqfd = open(MIDI_DEVICE, O_RDONLY);
if (seqfd == -1) {
printf("Error: cannot open %s\n", MIDI_DEVICE);
exit(1);
}
// now just wait around for MIDI bytes to arrive and print them to screen.
while (1) {
read(seqfd, &message, sizeof(message));
byte1 = message[0];
byte2 = message[1];
byte3 = message[2];
s1whack = 0;
s2whack = 0;
if ((byte1 == 160)&&(byte2 == 1)) {
s1whack = 1;
}
if ((byte1 == 160)&&(byte2 == 8)) {
s1x = byte3 / 128.0;
}
if ((byte1 == 160)&&(byte2 == 9)) {
s1y = byte3 / 128.0;
}
if ((byte1 == 160)&&(byte2 == 10)) {
s1z = (byte3-14.0) / 128.0;
}
if ((byte1 == 160)&&(byte2 == 2)) {
s2whack = 1;
}
if ((byte1 == 160)&&(byte2 == 11)) {
s2x = byte3 / 128.0;
}
if ((byte1 == 160)&&(byte2 == 12)) {
s2y = byte3 / 128.0;
}
if ((byte1 == 160)&&(byte2 == 13)) {
s2z = (byte3 -14) / 128.0;
}
printf("%f %f %f\t%f %f %f\n",s1x,s1y,s1z,s2x,s2y,s2z);
}
}
query variables in haXe
This one took me quite some time to research:
What I wanted to do was to have a way to pass a variable in a haXe script that I'm compiling down to Flash 9. There are a bunch of ways to do it, but the one that fit my needs the best was FlashVars.
To pass in a variable into your haXe/Flash script, you just need to either embed the parameters at the end of the URL, like this:
<embed src="testpassvariables.swf?test1=la">
Or use the FlashVars variable name, like this:
<embed src="testpassvariables.swf"
FlashVars="test1=la">
You then access this variable in your haXe/Flash script with:
trace("p=" + flash.Lib.current.loaderInfo.parameters.test1);
If you are running in the standalone Flash player, it doesn't look like you can pass in FlashVars, so you need to do something like:
if (flash.Lib.current.loaderInfo.parameters.test1 == null) {
trace("standalone and undefined");
}
Tuesday, June 03, 2008
paradigmatic
Paradigmatic analysis is the analysis of paradigms embedded in the text rather than of the surface structure (syntax) of the text which is termed syntagmatic analysis.
Monday, June 02, 2008
ircam
Expressivity in Music and Speech
EMUS
This conference is where a paper I'm helping with is going to be presented.
Sunday, June 01, 2008
Subscribe to:
Posts (Atom)