IndyWoodFILMS - Invasion of the NOT QUITE DEAD
I took my wife to the cinema yesterday to see a rom-com with Hugh Grant.
He was as charming as usual and the jokes were pretty funny, but I couldn't help thinking I'd see it all before?
The truth is that Hollywood have become very good at making movies that people will enjoy, using a progression of events that lead to the "Hollywood Crescendo" and everybody leaves with a smile on their face!
This is a well and good, but it comes at the expense of diversity and because of the sheer expense of making a movie; budding script writers have only three options: Goto Hollywood and have their work of art sculpted into the structure that they know will sell, goto Bollywood and have something similar happen, or go independant.
I'd hate to think of how many masterpieces have been lost due to the struggles of going independant.. It must be a struggle of epic proportions of which only an ellite few achieve success.
Antony Lane of IndyWoodFILMS is the latest to try and achieve success in creating an independant film. He is using social sites such as Twitter and Facebook to raise money for the project.
Here is a preview of the film.
Here is some more information on IndyWoodFILMS:
IndywoodFILMS presents: 'Invasion Of The NOT QUITE Dead' teaser promo...
In August 2009, a special teaser promo was created to raise awareness for a horror feature film called 'INVASION OF THE NOT QUITE DEAD' which has the support of such names as: Tom Savini, Kevin Pollak, Ken Russell, David Hess, Lloyd Kaufman, HG Lewis, Lee Boardman, Justin Kerrigan & talk show host Jonathan Ross...
The teaser was shot on S16mm film on location at a small farm in Kent and stars horror veteran Leslie Simpson (Dog Soldiers, The Descent, Doomsday), Efisia Fele and Frank Jakeman.
Visit us at the www.theindywoodproject.com and help us to independently raise funds to make the feature film, we are currently receiving an incredible amount of media attention due to us selling pre-order producer packages to help raise our £100,000 budget, so far as of Jan 30th we have sold 455 producer packages to 18 different countries, raising over £17,000 - help us to continue the success...
For more information on how you can help the production of 'INVASION OF THE NOT QUITE DEAD' please visit: http://www.theindywoodproject.com or http://www.invasionofthedead.com
and for real time updates why not add to us to your twitter: @indywoodFILMS com
and our official facebook page com
or contact writer/producer/director Antony Lane.
Viva la revolutión! :)
How to determine if a particular bit in a binary block is set
I was recently working with the Arduino and an 8x8 LED matrix and attempting to figure out an easy and clean way to convert co-ordinates into matrix positions. I decided that as each LED in the matrix can only have two positions, that I could create an array of 8 binary blocks each with 8 bits.
So if I gave a row the binary data: 01010101, I would see every other LED turned on.
My problem came when I attempted write the code that takes the binary block and figures out which LEDs need to be turned on in the matrix. Back to old-school programming I guess!
The trick is to shift to the correct column and then mask the value using the and-bitwise operator:
The following code is written in ruby to help explain the technique clearly..
binary = 0b010101
columnInterestedIn = 1 /* first column from left to right */
isSwitchedOn = (binary >> columnInterestedIn) & 1 == 1
Simple eh?! The actual C++ code that ended up on the Arduino looks like this:
int bitData = (data[columnIndex] >> rowIndex) & 1);
if (bitData == 1) digitialWrite(rowPins[rowIndex], HIGH);
Creating a Twitter client using Google Go 1

Google Go was announced just a few days ago and I've been trying to figure out how to write a Twitter client since then (Think of it as the 21st Centry version of Hello World! :P ).
My biggest stumbling block was that currently Google Go was unable to send http requests with an Authorization header using the current http package implementation. After looking through the code I realised that the logic I needed was there, it just wasn't exposed (as the library is still in early stages of development).
func send(request *Request) (response *Response, err os.Error) { ... }
The function send shown above was just what I needed! So I replaced all occurrences of send with Send (which makes it public) and was able to call it from my own Go code using http.Send(...). Hurray!
The client is now complete and even includes a command line interface. I will hopefully add a web UI later on (probably when the Google Go team have finished implementing cookie handling).
Once built, you can use the command line client like so:
$ # update your status
$ ./twitter-client -u myusername -p mypassword -s "This #GoogleGo #Twitter client created by @tmedhurst is fab!"
$ # check your direct messages
$ ./twitter-client -u myusername -p mypassword -dm
$ # check your main timeline (similar to the home screen on the Twitter web site)
$ ./twitter-client -u myusername -p mypassword -f
$ # show my recent posts
$ ./twitter-client -u myusername -p mypassword -t

I will eventually allow you to point to a file (which you can chmod 600 to make secure) which contains your username and password (just like a passwd file) to save you entering this information in each time.
The client is only available for x86/x64 intel macs and x86/x64 intel and arm Linux machines (as that's all that Google Go supports at the moment). The Windows version will be available when Google Go is made available to Windows. (I've tried building it in Cygwin.. but no luck I'm afraid :'( ).
The client/package is available on GitHub here.
It is licensed under GPL so you can do what you like with it as long as you adhere to this license.
If you wish to use this in a commercial platform; commercial licenses can be purchased, please contact me for more details.
Donations
If you would like to make a donation to this project, please consider donating £3 or whatever you wish for beer money! Many Thanks!! :)
How to Blue Screen windows remotely with Python 1

Easily blue screen any Windows Vista, 2008, and 7 box which has SMB allowed through the Firewall (All but Windows 7 have this turned on by default!).
Here is the script: download bluescreen_windows.py
Create a CKEditor v3 Plugin 36
CKEditor is a fantastic open-source WYSIWYG editor. However, it is unfortunately quite difficult to extend as there is very little documentation ready for CKEditor (the available stuff is for the older version: FCKEditor, which is very different).
But fear not my fellow readers; for I have managed to figure out how to create an iframe-based plugin (perfect if you want to use your old dialog-based fckeditor plugins in ckeditor)!!
The first step is to add your plugin into the toolbar settings. In the example below, my new plugin is called uploader and will be a replacement for the rubbish image uploader that comes with ckeditor:
ckeditor/config.js
CKEDITOR.editorConfig = function( config )
{
// Define changes to default configuration here. For example:
// config.language = 'fr';
// config.uiColor = '#AADC6E';
config.toolbar = 'MyToolbarSet'
config.toolbar_MyToolbarSet =
[
['Cut','Copy','Paste','PasteFromWord','-','SpellChecker'],
['Undo','Redo','-','Find','Replace'],
['NumberedList','BulletedList','Outdent','Indent','Blockquote','RemoveFormat','Source'],
['Link','Unlink'],
['uploader','Table','HorizontalRule','SpecialChar'],
'/',
['Bold','Italic','StrikeThrough','-','Subscript','Superscript'],
['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
['Format','FontSize'],
['FitWindow','ShowBlocks']
]
};
As you can see, I have placed my 'uploader' plugin next to the 'Table' button.
The next stage is to create a folder for you plugin. This folder needs to be called the same as the plugin name (in this instance we must call it 'uploader'). You will then need a file called plugin.js inside this folder and a folder called dialogs, where all your dialog pages go.
For this example we will reference a dialog page called upload.html, which also requries a script file called upload.js. I have also added a PNG icon which will appear on the toolbar as the button to launch my dialog.
ckeditor
-- dialogs
-- upload.html
-- upload.js
-- images
-- icon.png
-- plugin.js
Now to put some content in the plugin.js file in your plugin folder...
plugin.js
CKEDITOR.plugins.add('uploader',{
requires: ['iframedialog'],
init:function(a){
CKEDITOR.dialog.addIframe('upload_dialog', 'Image Uploader','path/to/ckeditor/plugins/uploader/dialogs/upload.html',550,400,function(){/*oniframeload*/})
var cmd = a.addCommand('uploader', {exec:uploader_onclick})
cmd.modes={wysiwyg:1,source:1}
cmd.canUndo=false
a.ui.addButton('uploader',{ label:'Upload an Image..', command:'uploader', icon:this.path+'images/icon.png' })
}
})
function uploader_onclick(e)
{
// run when custom button is clicked
CKEDITOR.instances.editor1.openDialog('upload_dialog')
}
I guess some explanation is required for this...
There is a plugin called 'iframedialog' which does all the difficult(!) work in registering a dialog. We need to reference it to be able to use it (hence the requires:['iframedialog']).
"CKEDITOR.dialog.addIframe" registers an iframe using the plugin 'iframedialog' take a the following parameters:
- name
- window title
- url
- width
- height
- on_iframe_loaded callback function
Once you have registered the iframe dialog, you can add a new command which calls a function (uploader_onclick) which then opens the registered iframe. Simple really!!
The only thing you need to do now is to instruct CKEditor to load the plugin.js file from your folder. To do that open the file "ckeditor.js" and do a search for the phrase 'about, This should take you to the part of the script which lists all the plugins. Add your plugin name to this comma-separated list and tryout your new plugin! :)
UPDATE: Handling the OK Button
Many thanks to Lee for extending my tutorial to handle to OK button (something a lot of you have been asking about).
Add the following to the page in the iframe...
var CKEDITOR = window.parent.CKEDITOR;
var okListener = function(ev) {
this._.editor.insertHtml('<p>Text Here</p>');
CKEDITOR.dialog.getCurrent().removeListener("ok", okListener);
};
CKEDITOR.dialog.getCurrent().on("ok", okListener);
